I have the following line of code in my application:
CString strAppName = AfxGetAppName();
Sometimes it fills strAppName
up with garbage characters, and I can't figure out why.
Anyone have any ideas?
TIA.
I have the following line of code in my application:
CString strAppName = AfxGetAppName();
Sometimes it fills strAppName
up with garbage characters, and I can't figure out why.
Anyone have any ideas?
TIA.
That is possible if you change m_pszAppName
manually.
At the very beginning of application initialization,
AfxWinInit
callsCWinApp::SetCurrentHandles
, which caches the current value of them_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 changem_pszAppName
inInitInstance
as adviced in MSDN, you still have the old pointer value inpModuleState->m_lpszCurrentAppName
. TheAfxGetAppName()
function returnsAfxGetModuleState()->m_lpszCurrentAppName
.
You could add data breakpoint on m_lpszCurrentAppName and on m_pszAppName
. It is initialized in <...>\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc\appinit.cpp
file. You'll see what is going on with that variable and who's trying to change it.