エラーが発生
32bitのアプリケーションを64bitへ移植する際に、
OnCreateを呼び出した後に下記のエラーで止まった。
Program: C:\Windows\system32\mfc140d.dll
File: d:\agent\_work\2\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\occcont.cpp
Line: 925
俺の環境では以下のパスにファイルがある。
D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.21.27702\atlmfc\src\mfc\occcont.cpp
FillListSitesOrWnds
関数内のASSERT(IsWindow(pTemp->m_hWnd));
でアサートにかかっていた。
エラー箇所までのTRACEの内容を確認して見ると、
\occsite.cpp(529) : AppMsg - CoCreateInstance of OLE control {6262D3A0-531B-11CF-91F6-C2863C385E30} failed.
\occsite.cpp(530) : AppMsg - >>> Result code: 0x80040154
\occsite.cpp(531) : AppMsg - >>> Is the control is properly registered?
\occcont.cpp(919) : AppMsg - Warning: Resource items and Win32 Z-order lists are out of sync. Tab order may be not defined well.
Debug Assertion Failed!
と出力されていた。
英語がわからないので、グーグル先生に聞いてみると、
OLEコントロール{6262D3A0-531B-11CF-91F6-C2863C385E30}のCoCreateInstanceが失敗しました。
>>>結果コード:0x80040154
>>>コントロールは正しく登録されていますか?
警告:リソース項目とWin32 Zオーダーリストは同期していません。 タブ順序が適切に定義されていない可能性があります。
OLEコントロールに問題が有るらしい!!!
内容についての確認
・結果コード:0x80040154(REGDB_E_CLASSNOTREG)の意味
クラスが登録されていないことを意味します。
・{6262D3A0-531B-11CF-91F6-C2863C385E30}の意味
グリッドコントロールの意味です。
結果
MSFlexGridが使用できなくなっていました。
この時代に、MSFlexGridを利用している人とかどれくらい居るのでしょうか?
MSFlexGridは64ビットでサポートされていないのでCListCtrlでそれっぽくしてみる事にしました。