C++程序员成长笔记:常见问题与解决策略

需积分: 9 1 下载量 41 浏览量 更新于2024-09-17 收藏 59KB TXT 举报
"这篇文章是关于C++编程语言中VC(Visual C++)常见的问题与经验总结,适合初学者和有经验的程序员参考。作者通过分享自己在开发过程中的经验,提出了108个问题及其解决方案,帮助读者提高编程技能。" 1. 如何获取应用程序的主窗口? 在VC++中,可以通过`CWinThread::m_pMainWnd`或`AfxGetMainWnd()`函数来获取应用程序的主窗口。例如,如果你想最大化显示主窗口,可以使用以下代码: ```cpp AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED); ``` 2. 如何获取当前执行文件的完整路径? 可以使用`GetModuleFileName()`函数来获取当前执行文件的完整路径。你需要提供一个缓冲区来存储路径,如下所示: ```cpp TCHAR exeFullPath[MAX_PATH]; GetModuleFileName(NULL, exeFullPath, MAX_PATH); ``` 3. 如何加载并显示图标? 加载和显示图标通常涉及到Windows API函数。有两种方法: - 使用`SHGetFileInfo`函数来获取图标信息,包括大小、颜色深度和图标句柄,然后使用`CDC::DrawIcon()`绘制图标。示例代码如下: ```cpp SHFILEINFO stFileInfo; if (::SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"), 0, &stFileInfo, sizeof(stFileInfo), SHGFI_ICON)) { 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); ``` 请注意,`notepad.exe`的路径可能需要根据实际安装位置进行调整。 4. 如何获取系统相关目录? - 获取Windows目录:使用`GetWindowsDirectory()`函数。 - 获取System目录:使用`GetSystemDirectory()`函数。 - 获取临时目录:使用`GetTempPath()`函数。 - 获取当前目录:使用`GetCurrentDirectory()`函数。当前目录指的是程序运行时所在的目录,而工作目录则可以是任何指定的目录。 5. 如何自定义消息传递? 在Windows编程中,你可以定义自己的消息类型。定义一个新的消息常量,例如`WM_MY_MESSAGE`(通常选择`WM_USER`之后的值),然后通过`PostMessage`或`SendMessage`发送。消息参数通常包括`WPARAM`和`LPARAM`,以及返回值`LRESULT`。例如: ```cpp #define WM_MY_MESSAGE (WM_USER + 100) // 发送消息 LRESULT OnMyMessage(HWND hWnd, WPARAM wParam, LPARAM lParam) { // 处理消息的代码 } // 注册消息处理函数 ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) ``` 以上就是从标题和描述中提炼出的VC++编程中的一些关键知识点,包括获取主窗口、文件路径、图标加载、系统目录以及自定义消息的处理。这些内容对于提升VC++编程能力具有很大的帮助。