VC++编程技巧:获取主窗口、应用路径与图标
需积分: 9 158 浏览量
更新于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++应用程序。
657 浏览量
208 浏览量
118 浏览量
2012-03-16 上传
202 浏览量
2021-09-30 上传
2024-01-11 上传
170 浏览量
2021-10-02 上传
Harry0404
- 粉丝: 13
- 资源: 7