[前言:]编程(www.cppentry.com)中遇到的问题很多,再优秀的程序员也不会没有问题,但很多解决方法被淹没在论坛浩瀚的“水”中了,为了便于同道查询同时保存这些精华,我将在实际编程(www.cppentry.com)中常见的问题以及论坛中优秀的回贴收集起来以专题的形式发表。本文中的所有问题及回答均来自论坛。问题一:如何实现指定盘符的光驱弹出弹入
钥匙在这里:
| 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() |
问题二:如何实现繁简体互换?
钥匙在这里:
| // j2f.cpp : 简体(gb)==>繁体==>big5的过程 // 反向转换是类似的. // 注意直接从简体-->big5不能做到一一对应.会有很多 出现, // 故此需要先转成繁体.再转成big5. // 我感觉这种方法应当和winnt或office里提供的繁简或字符集互转是一致的. #include "stdafx.h" void j2f(const string &s) //从标准输入简体国标-->big5繁体标准输出,输入两个空行退出 |
问题三:多线程中如何得到视图指针?
钥匙在这里:有两种方法可以实现你的要求:
1)第一种方法:
要是多线程不是在App.cpp里出现,那么要在多线程的.cpp中加上extern CYourApp theApp;
| //获得文档模板: POSITION curTemplatePos = theApp.GetFirstDocTemplatePosition(); CDocTemplate *m_doc=theApp.GetNextDocTemplate(curTemplatePos); file://获得文档: file://调用视图函数: |
2)第二种方法:
//获得窗体指针: file://获得与该窗体符合的视图: file://调用视图函数: |