Visual C++编程疑难问题解

类别:VC语言 点击:0 评论:0 推荐:
原地址:http://www.yesky.com/20030211/1651565_2.shtml
问题一:如何实现指定盘符的光驱弹出弹入

  钥匙在这里:

void ctrl_cdrom_door(
LPCTSTR drivename ,//驱动器的名字如f:等.
bool fOpen file://弹出时用true,弹入时用false
)
{
 TCHAR devstr[128],ctrlstr[128];
 wsprintf(devstr,_T("open %s type cdaudio alias mycd wait"),drivename);
 wsprintf(ctrlstr,_T("set mycd door %s wait"),fOpen?_T("open"):_T("closed"));
 mciSendString(devstr,NULL,0,NULL);
 mciSendString(ctrlstr,NULL,0,NULL);
 mciSendString(_T("close mycd wait"),NULL,0,NULL);
}
file://测试的例子代码.
void CMainFrame::OnTestOpen()
{
 // TODO: Add your command handler code here
 ctrl_cdrom_door("F:",true);
}

void CMainFrame::OnTestClose()
{
 // TODO: Add your command handler code here
 ctrl_cdrom_door("F:",false);
}

  问题二:如何实现繁简体互换?

  钥匙在这里:

// j2f.cpp : 简体(gb)==>繁体==>big5的过程
// 反向转换是类似的.
// 注意直接从简体-->big5不能做到一一对应.会有很多?出现,
// 故此需要先转成繁体.再转成big5.
// 我感觉这种方法应当和winnt或office里提供的繁简或字符集互转是一致的.

#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;

void j2f(const string &s)
{
 int n=s.length ();
 int r=LCMapString(
   MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC),
   LCMAP_TRADITIONAL_CHINESE,
   s.c_str (),s.length (),NULL,0);
 if (!r) cout <<"error :"<

本文地址:http://com.8s8s.com/it/it350.htm