VC6.0使用与调试技巧详解

需积分: 10 8 下载量 166 浏览量 更新于2024-07-31 收藏 417KB DOC 举报
"这篇文档是关于VC6.0使用和调试过程中常见的问题的总结,包含了多年的经验积累。主要涉及如何获取应用程序主窗口的指针、确定应用路径、获取其他程序的图标以及获得不同目录信息的方法。" 在使用Microsoft Visual C++ 6.0 (VC6.0)进行开发时,可能会遇到各种问题,以下是一些关键知识点: 1. **获取应用程序主窗口的指针**: - 在MFC框架中,应用程序主窗口的指针通常保存在`CWinThread::m_pMainWnd`成员变量中。可以使用全局函数`AfxGetMainWnd()`来获取这个指针。例如,如果你想要最大化主窗口,你可以这样操作: ```cpp AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED); ``` 2. **确定应用程序的路径**: - 要获取当前运行应用程序的完整路径,可以使用Windows API函数`GetModuleFileName()`,将第二个参数设为NULL,表示获取当前进程的模块路径。然后可以通过字符串处理函数去除文件名,只保留路径部分。 3. **获取其他程序的图标**: - 方法一:利用SDK函数`SHGetFileInfo()`,它可以获取文件的相关信息,包括图标。示例代码展示了如何在程序中显示记事本的图标。 ```cpp SHFILEINFO stFileInfo; ::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) pDC->DrawIcon(10, 10, hIcon); ``` - 注意,正确获取程序路径可能需要根据不同的系统环境和需求进行调整,比如在Windows 95下找寻WinPen应用,可能需要访问注册表来获取路径。 4. **获得各种目录信息**: - Windows目录:使用`GetWindowsDirectory()`函数,它会将Windows系统的根目录路径复制到指定的缓冲区。 - Windows下的System目录:可以直接将"System32"添加到Windows目录后面,或者使用`GetSystemDirectory()`函数获取。 - 其他系统目录,如用户配置目录、临时文件目录等,可以使用相应的API函数,如`GetTempPath()`、`GetEnvironmentVariable()`来获取。 这些知识点是VC6.0开发者在编写和调试应用程序时经常会用到的技巧,掌握它们能帮助提升开发效率和解决实际问题。