2022年VisualC++编程技巧小结 .pdf
《2022年VisualC++编程技巧小结 .pdf》由会员分享,可在线阅读,更多相关《2022年VisualC++编程技巧小结 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Visual C+编程技巧小结作者: RHU-TAC 教程来源: RHU 点击数:164 更新时间: 2005-12-24 1. 如何获取应用程序的实例句柄? 应用程序的实例句柄保存在CWinAppIm_hInstance 中,可以这么调用AfxGetInstancdHandle 获得句柄 . Example: HANDLE hInstance=AfxGetInstanceHandle(); 2. 如何通过代码获得应用程序主窗口的指针? 主窗口的指针保存在CWinThread:m_pMainWnd中,调用 AfxGetMainWnd实现。AfxGetMainWnd() -ShowWindow(
2、SW_SHOWMAXMIZED); /使程序最大化 . 3. 如何在程序中获得其他程序的图标 ? 两种方法 : (1) SDK 函数 SHGetFileInfo 或使用ExtractIcon 获得图标资源的handle, (2) SDK 函数SHGetFileInfo 获得有关文件的很多信息 ,如大小图标 ,属性 ,类型等 . Example(1): 在程序窗口左上角显示NotePad图标 . void CSampleView: OnDraw(CDC * pDC) if( : SHGetFileInfo(_T(c:pwin95notepad.exe),0,&stFileInfo,sizeof(
3、stFileInfo),SHGFI_ICON) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - pDC -DrawIcon(10,10,stFileInfo.hIcon); Example(2): 同样功能 ,Use ExtractIcon Function void CSampleView: OnDraw(CDC *pDC) HICON hIcon=: ExtractIcon(AfxGetInstanceHandle(),_T
4、(NotePad.exe),0); if (hIcon &hIcon!=(HICON)-1) pDC-DrawIcon(10,10,hIcon); 说明 : 获得 notepad.exe 的路径正规上来说用GetWindowsDirectory 函数得到 ,如果是调用win95 下的画笔, 应该用访问注册表的方法获得其路径,要作成一个比较考究的程序,考虑应该全面点. 4. 如何编程结束应用程序?如何编程控制windows 的重新引导 ? 这是个很简单又是编程中经常要遇到的问题. 第一问 ,向窗口发送WM_CLOSE 消息 ,调用 CWnd:OnClose 成员函数 .允许对用户提示是否保存修改
5、过的数据. Example: AfxGetMainWindow()-SendMessage(WM_CLOSE); 还可以创建一个自定义的函数Terminate Window void Terminate Window(LPCSTR pCaption) CWnd *pWnd=Cwnd:FindWindow(NULL,pCaption); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - if (pWnd) pWnd -SendMes
6、sage(WM_CLOSE); 说明 : FindWindow 函数不是提倡的做法,因为它无法处理标题栏自动改变,比如我们要检测Notepad 是不是已运行而事先不知道Notepad 的标题栏 ,这时 FindWindow 就无能为力了,可以通过枚举windows 任务列表的办法来实现。在 机械出版社 Windows 95 API开发人员指南 一书有比较详细的介绍,这里就不再多说乐。第二问 ,Use ExitWindowsEx Function 函数控制系统是重新引导,还是重启windows. 前面已经有人讲过乐,就不再提了。5. 怎样加栽其他的应用程序? 我记得这好象是出场频度很高的问题。三
7、个 SDK 函数 winexec, shellexecute,createprocess可以使用。WinExec 最简单, 两个参数, 前一个指定路径, 后一个指定显示方式.后一个参数值得说一下,比如泥用SW_SHOWMAXMIZED 方式去加栽一个无最大化按钮的程序,就是Neterm,calc 等等,就不会出现正常的窗体,但是已经被加到任务列表里了。ShellExecute 较 WinExex 灵活一点,可以指定工作目录,下面的Example 就是直接打开c:temp1.txt,而不用加栽与txt 文件关联的应用程序 ,很多安装程序完成后都会打开一个窗口,来显示Readme or Faq,偶
8、猜就是这么作的啦。ShellExecute(NULL,NULL,_T(1.txt),NULL,_T(c:temp),SW_SHOWMAXMIZED); CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL 代替,它可以指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的Example: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - STARTUPINFO stinfo; / 启动窗口的信息PRO
9、CESSINFO procinfo; / 进程的信息CreateProcess(NULL,_T(notepad.exe),NULL,NULL.FALSE, NORMAL_PRIORITY_ CLASS,NULL,NULL, &stinfo,&procinfo); 6. 确定应用程序的路径前些天好象有人问过这个问题. Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example: TCHAR exeFullPathMAX_PA TH; / MAX_PA TH 在 API 中定义了吧,好象是128 GetModuleFileName(NULL,exeFull
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年VisualC+编程技巧小结 2022 VisualC 编程 技巧 小结
限制150内