VC编程技巧与应用指南

需积分: 0 2 下载量 179 浏览量 更新于2024-07-30 收藏 331KB DOC 举报
"这篇文章主要汇总了VC++编程中的一些常用技术,包括获取应用程序主窗口指针、确定应用程序路径以及从其他程序中提取图标的两种方法。这些知识点对于深入理解和使用VC++开发Windows应用程序非常关键。" 在VC++编程中,掌握以下几个技术点是至关重要的: 1. **获取应用程序主窗口指针**: 在MFC框架下,应用程序的主窗口指针通常存储在`CWinThread::m_pMainWnd`成员中。要动态获取这个指针,可以调用全局函数`AfxGetMainWnd()`。例如,如果你想最大化主窗口,可以这样实现: ```cpp AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED); ``` 2. **确定应用程序的路径**: 使用API函数`GetModuleFileName()`可以获取当前应用程序的完整路径。为了获取仅包含路径的部分,你需要对返回的字符串进行处理,去除最后一个文件名部分。例如: ```cpp TCHAR exeFullPath[MAX_PATH]; GetModuleFileName(NULL, exeFullPath, MAX_PATH); // 去掉文件名,得到路径 // 这里省略了具体的处理步骤,一般会涉及到字符串操作 ``` 3. **获取其他程序的图标**: - 方法一:使用`SHGetFileInfo` SDK函数,它可以提供包括图标在内的文件信息。以下示例展示了如何在程序窗口左上角显示记事本的图标: ```cpp void CSampleView::OnDraw(CDC* pDC) { SHFILEINFO stFileInfo; if (::SHGetFileInfo(_T("c:\\windows\\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); } ``` 4. **注意事项**: - 获得其他程序的路径时,如果需要访问特定版本的系统文件(如Windows 95下的程序),可能需要通过访问注册表来获取准确路径,因为直接使用文件路径可能会因操作系统版本差异而失效。 以上知识点都是VC++开发中常见的实践技巧,理解并熟练运用它们将有助于提高代码的效率和灵活性。在实际开发中,还需要注意错误处理和资源释放,例如释放从`SHGetFileInfo`或`ExtractIcon`获得的图标句柄,确保程序的稳定性和内存管理的正确性。