VC++工具软件实用技巧:改变窗口图标与获取应用信息

需积分: 0 2 下载量 164 浏览量 更新于2024-08-01 收藏 378KB DOC 举报
"这篇文档是关于VC++工具软件的用法总结,主要涉及如何更改窗口图标、获取应用程序主窗口指针、确定应用路径、以及如何在程序中获取其他程序的图标等常见操作。" 在VC++编程中,经常会遇到需要对窗口进行自定义设置或者获取系统信息的需求。以下是对标题和描述中提及的知识点的详细说明: 1. **改变窗口图标**: 在VC++中,如果你想改变窗口的图标,你可以通过SDK函数如`SHGetFileInfo`或`ExtractIcon`来获取其他程序的图标资源,并在你的窗口上显示。例如,可以创建一个`CSampleView`类的`OnDraw`函数,通过`SHGetFileInfo`获取记事本(`Notepad.exe`)的图标,并使用`CDC::DrawIcon`绘制到窗口的指定位置。 2. **获取应用程序主窗口指针**: VC++中的主线程对象`CWinThread`有一个成员变量`m_pMainWnd`,它存储了应用程序主窗口的指针。你可以通过全局函数`AfxGetMainWnd()`来获取这个指针,然后执行相关的操作,如最大化窗口:`AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED)`。 3. **确定应用程序路径**: 若要获取当前应用程序的完整路径,可以使用API函数`GetModuleFileName`,传入`NULL`作为参数,表示获取当前进程的模块(即执行文件)的路径。将结果存储在一个足够大的缓冲区中,如`TCHAR exeFullPath[MAX_PATH]`。 4. **获取其他程序的图标**: - 使用`SHGetFileInfo`函数,可以获取文件的相关信息,包括图标。例如,如果想获取记事本的图标,可以传递文件的完整路径,`SHGFI_ICON`标志,以及一个用于存储信息的结构体,如`SHFILEINFO stFileInfo`。 - 另一种方法是通过`ExtractIcon`函数,传入程序实例句柄和文件名,可以获取指定索引号的图标。例如,`HICON hIcon = ::ExtractIcon(AfxGetInstanceHandle(), _T("NotePad.exe"), 0);`。 5. **获得各种目录信息**: - 获取Windows目录,可以使用`GetWindowsDirectory`函数,它会将Windows系统的根目录路径填充到指定的缓冲区。 - 获取Windows下的"system"目录,通常可以通过在Windows目录的基础上添加"system"子目录来实现。 在实际编程中,确保考虑到各种情况,比如不同操作系统版本下的路径差异,以及可能需要访问注册表来获取特定程序路径的情况,这是编写健壮和兼容性良好的程序的关键。对于更复杂的应用,可能还需要处理多线程、错误处理、资源管理等多个方面的问题。