最近使ったファイル CWinApp::m_pRecentFileList | かに太郎、ただいま開発中

かに太郎、ただいま開発中

Windowsアプリ作ってます。

C++とMFCから、C#とXAMLにのんびり移行中。

忘れっぽいので、健忘録。

VS2008化後、

CWinApp::m_pRecentFileList (最近使ったファイル)を参照しているところで、ハングアップ。

ごく一部のPCだけで発生。なんでじゃぁ~


ダメなコード

int nSize = m_pRecentFileList->GetSize();
for ( int i = 0; i < 5; ++i)
{
sprintf( szKey, "ManualSaveFile%d", i );
if (i < nSize)
func((LPSTR)(LPCTSTR)(*m_pRecentFileList)[i]);
else
SetRegStr("");

}


直したコード

if(m_pRecentFileList){    // NULLチェック

int nSize = m_pRecentFileList->GetSize();
for ( int i = 0; i < 5; ++i)
{
sprintf( szKey, "ManualSaveFile%d", i );

if (i < nSize){
CString strFileName = (*m_pRecentFileList)[i];

if (strFileName.GetLength() >0){ // 文字列の中身があるかチェック
func((LPSTR)(LPCTSTR)strFileName);

}else{

SetRegStr("");

}
}else{
SetRegStr("");

}

}

}


VC++6のときは、6年ほどの間に、1件も問い合わせが無かったので、

上記ダメコードでも大丈夫だった。

MFCが変わったんやろうけど。

まだ、この手のやつが潜んでないか心配。