を返します。 AfxGetAppNameは()私は自分のアプリケーションに次のコード行を持つ文字化け
CString strAppName = AfxGetAppName();
strAppName
いっぱい、と私はその理由を把握することはできません。
誰もが考えている?
TIA。
を返します。 AfxGetAppNameは()私は自分のアプリケーションに次のコード行を持つ文字化け
CString strAppName = AfxGetAppName();
strAppName
いっぱい、と私はその理由を把握することはできません。
誰もが考えている?
TIA。
を手動で変更すると可能です。次のようにポインタの現在の値をキャッシュCWinApp::SetCurrentHandles
を呼び出すAfxWinInit
アプリケーションの初期化の非常に始まり、時
:
pModuleState->m_lpszCurrentAppName = m_pszAppName;
で、モジュール状態構造体はのコピーを保持していますポインタ。を
InitInstance
に変更した場合、MSDNのアドバイスでは、以前のポインタ値はまだpModuleState->m_lpszCurrentAppName
になります。AfxGetAppName()
関数はAfxGetModuleState()->m_lpszCurrentAppName
を返します。
data breakpointをm_lpszCurrentAppNameに、に追加できます。ファイルは<...>\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc\appinit.cpp
に初期化されています。あなたはその変数で何が起こっているのか、誰がそれを変更しようとしているのかを見ていきます。
私のアプリケーションは 'm_pszAppName'を変更しません。それはいくつかのレジストリキーを変更しますが、それは問題になる可能性がありますか? – Justin
私はレジストリキーを変更すると 'm_pszAppName'が暗黙的に変更されるとは思わない。 –
'strAppName'にガベージ文字が入力されていませんか?その文字列の後の不正確なコードは、 'strAppName'を破壊する可能性があります。 –
私は肯定的です。私は、デバッグモードでアプリケーションを実行している、AfxGetAppName()はゴミを返します。あるいは、何も返さないかもしれないし、既にそこにごみがあります。 – Justin
m_lpszCurrentAppNameがどのように初期化されているかを調べるには、私の答えで説明したようにデータブレークポイントを追加することができます。 –