c++ - AfxGetAppName() 返回垃圾字符

标签 c++ mfc

我的应用程序中有以下代码行:

CString strAppName = AfxGetAppName();

有时它会用垃圾字符填充 strAppName,我不明白为什么。

有人有什么想法吗?

TIA。

最佳答案

如果你改变 m_pszAppName 是可能的手动。

At the very beginning of application initialization, AfxWinInit calls CWinApp::SetCurrentHandles, which caches the current value of the m_pszAppName pointer as follows:
pModuleState->m_lpszCurrentAppName = m_pszAppName;

That is, the module state struct holds a copy of the m_pszAppName pointer. If you change m_pszAppName in InitInstance as adviced in MSDN, you still have the old pointer value in pModuleState->m_lpszCurrentAppName. The AfxGetAppName() function returns AfxGetModuleState()->m_lpszCurrentAppName.

您可以添加 data breakpoint在 m_lpszCurrentAppName 和 m_pszAppName 上.它在 <...>\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc\appinit.cpp 中初始化文件。您将看到该变量发生了什么,以及谁在尝试更改它。

关于c++ - AfxGetAppName() 返回垃圾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1268005/

相关文章:

c++ - 没有标题的 Visual Studio 2008 MFC 拖动对话框并检测所有鼠标事件

c++ - 可能的编译器错误,本地结构从模板参数访问函数中的静态变量(phew)

c++ - 在 Linux 中捕获关闭控制台

c++ - istringstream - 如何做到这一点?

events - 即使添加 ON_COMMAND 处理程序后,菜单项仍保持禁用状态

c++ - 了解 CStatic 和 CWnd 以及消息路由

c++ - 如何在 C++ 中使用嵌套模板?

CPU 负载和 CPU 温度的 C++ 代码

c++ - Numpad 键事件导致 GetKeyboardState 卡住键

c# - MFC 应用程序中的 .NET Activex 控件访问冲突