VC编程常见问题解答与实例

需积分: 10 347 下载量 174 浏览量 更新于2024-08-01 5 收藏 155KB DOC 举报
本文档主要针对VC(Visual C++,Microsoft的开发工具套件)开发过程中遇到的四个常见问题进行详细解答和讨论。这些问题包括获取应用程序主窗口的指针、确定应用程序的路径、在程序中获取其他程序的图标以及获得各种目录信息。 首先,关于获取应用程序主窗口的指针,CWinThread类中的成员变量m_pMainWnd通常存储了这个信息。开发者可以通过调用AfxGetMainWnd()函数来访问这个指针,例如`AfxGetMainWnd()->ShowWindow(SW_SHOWMAXMIZED)`,这将使程序最大化显示。这个操作对于管理窗口状态和控制窗口行为非常重要。 其次,确定应用程序的路径可以使用`GetModuleFileName`函数。这个函数接收NULL参数作为起始地址,返回当前运行的模块(即应用程序本身)的完整路径。获取路径后,可以通过去掉可执行文件名来得到所需的目录信息。 接下来,获取其他程序的图标有两种常用方法。一是使用SDK(System Development Kit)提供的`SHGetFileInfo`函数,它不仅可以获取图标资源的handle,还可以获取文件的相关信息,如大小、图标属性和类型。例如,在窗口中显示Notepad图标时,可以这样操作: ```cpp void CSampleView::OnDraw(CDC* pDC) { if (SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"), 0, &stFileInfo, sizeof(stFileInfo), SHGFI_ICON)) { pDC->DrawIcon(10, 10, stFileInfo.hIcon); } } ``` 另一种方法是使用`ExtractIcon`函数,从指定的可执行文件中提取特定索引的图标: ```cpp void CSampleView::OnDraw(CDC* pDC) { HICON hIcon = ::ExtractIcon(AfxGetInstanceHandle(), _T("NotePad.exe"), 0); if (hIcon && hIcon != (HICON)-1) { pDC->DrawIcon(10, 10, hIcon); } } ``` 最后,获取不同类型的目录信息,比如Windows目录和系统目录,可以分别使用`GetWindowsDirectory`函数和`"Windows\\System32"`路径。对于Windows 95,可能需要通过访问注册表获取更精确的路径,尤其是对于非标准安装或不同版本的Windows系统。 总结起来,这篇文档为VC开发者提供了在开发过程中处理关键问题的实用技巧和示例代码,涵盖了窗口操作、应用程序路径查找、图标获取和系统目录定位等方面,有助于提高开发效率和代码质量。