VC 编程常见问题 1fdsgbf
C++编程技巧之一 Visual C++编程技巧之一
1. 如何获取应用程序的实例句柄? 2. 如何通过代码获得应用程序主窗口的指针? 3.如何在程序中获得其他程序的 图标? 4.如何编程结束应用程序?如何编程控制 windows 的重新引导? 5.怎样加栽其他的应用程序? 6. 确定应用程序的 路径 7. 获得各种目录信息 8. 如何自定义消息 9. 如何改变窗口的图标? 10. 如何改变窗口的缺省风格? 11. 如何将窗口居中显示? 12. 如何让窗口和 MDI 窗口一启动就最大化和最小化? 13. 如何使程序保持极小状态? 14. 如何限制窗口的大小? 15. 如何使窗口不可见? 16. 如何使窗口始终在最前方? 17、如何创建一个字回绕的 CEditView 18、通用控件的显示窗口 19、移动窗口 20、重置窗口的大小 21、如何单击除了窗口标题栏以外的区域使窗口移动
22、如何改变视窗的背景颜色 23、如何改变窗口标题 24、如何防止主框窗口在其说明中显示活动的
文档名
1. 如何获取应用程序的实例句柄 如何获取应用程序的实例句柄?
应用程序的 实例句柄保存在 CWinApp::m_hInstance 中,可以这么调用 AfxGetInstancdHandle 获得句柄. Example: HANDLE hInstance = AfxGetInstanceHandle();
2. 如何通过代码获得应用程序主窗口的指针 如何通过代码获得应用程序主窗口的指针?
主窗口的 指针保存在 CWinThread::m_pMainWnd 中,调用 AfxGetMainWnd 实 现。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED); //使程序最大化.
3.如何在程序中获得其他程序的 图标 如何在程序中获得其他
程序的 图标?
两种方法: (1) SDK 函数 SHGetFileInfo 或使用 ExtractIcon 获得图标资源的 handle, (2) SDK 函数 SHGetFileInfo 获得有关文件的 很多信息,如大小图标,属性,类型 等. Example(1): 在程序窗口左上角显示 NotePad 图标. void CSampleView: OnDraw(CDC * pDC) { if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"),0,&;stFileInfo,sizeof(stFileInfo),SHGFI _ICON)) {
pDC ->DrawIcon(10,10,stFileInfo.hIcon); } } Example(2):同样功能,使用 ExtractIcon 函数 void CSampleView:: OnDraw(CDC *pDC) { HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0); if (hIcon &;&;hIcon!=(HICON)-1) pDC->DrawIcon(10,10,hIcon); } 说明: 获得 notepad.exe 的路径正规上来说用 GetWindowsDirectory 函数得到,如 果是调用 win95 下的画笔,应该用访问
注册表的方法获得其路径,要作成一个 比较考究的程序,考虑应该全面点.
4.如何编程结束应用程序 如何编程控制 windows 的 如何编程结束应用程序?如何编程控制 如何编程结束应用程序 重新引导? 重新引导
这是个很简单又是编程中经常要遇到的问题. 第一问,向窗口发送 WM_CLOSE 消息,调用 CWnd::OnClose 成员函数.允许对用 户提示 是否保存修改过的数据. Example: AfxGetMainWindow()->Send
Message(WM_CLOSE); 还可以创建一个自定义的函数 Terminate Window void Terminate Window(LPCSTR pCaption) { CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption);
if (pWnd) pWnd ->SendMessage(WM_CLOSE); } 因为它无法处理标题栏自动改变, 比如 说明: FindWindow 函数不是提倡的做法, 我们要检测 Notepad 是不是已运行而事先不知道 Notepad 的标题栏,这时 FindWindow 就无能为力了,可以通过枚举 windows 任务列表的办法来实现。 在机械出版社"Windows 95 API 开发人员指南"一书有比较详细的介绍,这里就不 再多说。 第二问,Use ExitWindowsEx Function 函数控制
系统是重新引导,还是重启 windows.
5.怎样加栽其他的应用程序 怎样加栽其他的应用程序? 怎样加栽其他的应用程序
我记得这好象是出场频度很高的
问题。 三个 SDK 函数 winexec, shellexecute,createprocess 可以使用。 WinExec 最简单,两个参数,前一个指定路径