VC++编程技巧:获取主窗口、应用路径与图标

需积分: 9 10 下载量 4 浏览量 更新于2024-08-01 收藏 226KB DOC 举报
"VC用法汇总" 在VC++编程中,常常需要获取应用程序的相关信息以及与其他程序进行交互。以下是一些关键的用法汇总: 1. 如何通过代码获得应用程序主窗口的指针: 主窗口的指针在CWinThread类的成员变量`m_pMainWnd`中存储。通过调用全局函数`AfxGetMainWnd()`,可以获取到这个指针。例如,如果你想要最大化主窗口,你可以这样操作: ```cpp AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED); ``` 这行代码会将程序的主窗口设置为最大化状态。 2. 确定应用程序的路径: 使用API函数`GetModuleFileName`可以获取当前运行程序的完整路径。传入NULL参数表示获取当前进程的模块路径。例如: ```cpp TCHAR exeFullPath[MAX_PATH]; GetModuleFileName(NULL, exeFullPath, MAX_PATH); ``` 这将把程序的路径填充到`exeFullPath`字符串中。如果需要去除可执行文件名,可以使用字符串处理函数来截取路径。 3. 如何在程序中获得其他程序的图标: - 方法一:使用SDK函数`SHGetFileInfo`。这个函数可以获取文件的图标和其他信息。以下是一个示例: ```cpp SHFILEINFO stFileInfo; if (::SHGetFileInfo(_T("c:\\win95\\notepad.exe"), 0, &stFileInfo, sizeof(stFileInfo), SHGFI_ICON)) { CDC* pDC = /* 获取设备上下文 */; pDC->DrawIcon(10, 10, stFileInfo.hIcon); } ``` - 方法二:使用`ExtractIcon`函数。这可以从可执行文件中提取图标资源。以下是一个类似的示例: ```cpp HICON hIcon = ::ExtractIcon(AfxGetInstanceHandle(), _T("Notepad.exe"), 0); if (hIcon && hIcon != (HICON)-1) { CDC* pDC = /* 获取设备上下文 */; pDC->DrawIcon(10, 10, hIcon); } ``` 获取其他程序图标时,确保路径正确,有时可能需要使用`GetWindowsDirectory`获取Windows目录,或者在某些情况下,如访问Windows 95下的程序,可能需要通过读取注册表来获取路径。 4. 获得各种目录信息: - Windows目录:可以使用`GetWindowsDirectory`函数获取。例如: ```cpp TCHAR windowsDir[MAX_PATH]; GetWindowsDirectory(windowsDir, MAX_PATH); ``` - Windows下的System目录:使用`GetSystemDirectory`函数。例如: ```cpp TCHAR systemDir[MAX_PATH]; GetSystemDirectory(systemDir, MAX_PATH); ``` 这两个函数分别返回Windows系统目录和Windows系统子目录的路径。 在开发过程中,考虑全面性和兼容性是非常重要的,尤其是在涉及到跨平台或者特定环境的功能时。以上提供的方法可以帮助开发者更高效地管理和操作VC++应用程序。