VC++编程技巧:获取主窗口、应用路径与图标
需积分: 9 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++应用程序。
2024-01-26 上传
2023-05-01 上传
2023-07-10 上传
2023-07-14 上传
2023-05-13 上传
2024-02-07 上传
![](https://profile-avatar.csdnimg.cn/00aa6e3e05ec4a9da2d350c4124f88e9_zhang0404.jpg!1)
Harry0404
- 粉丝: 12
- 资源: 7
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景