カテゴリー
アーカイブ
2021/02/17 / ドキュメント付きの起動で抜ける? への1件のコメント
個人的なコートでのメモです.
普通に exe を起動してドキュメントを開くのは問題ない.
ドキュメント付きで起動すると,ウィンドウが表示されて,ドキュメントを読込み後終了してしまっている.

デバッガで追いかけると,ProcessShellCommand の呼び出しで FALSE となっている.

原因は,ドキュメントの読込み後にアプリケーションクラスにアクセスしている所で初期化が済んでないため.
初期化のコード(RcntFM)を CCommandLineInfo の前にして対応.
// メイン MDI フレーム ウィンドウを作成
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
// ドラッグ/ドロップ オープンを許可します
m_pMainWnd->DragAcceptFiles();
{
RcntFM.Read() ;
RcntFM.SetStartID(ID_RECENT_FILE_00) ;
}
// DDE、file open など標準のシェル コマンドのコマンドラインを解析します。
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew) {
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing ;
}
// コマンドラインでディスパッチ コマンドを指定します。
if (!ProcessShellCommand(cmdInfo))
return FALSE;
これをやっていて困ったのが,ソースのタイル表示.

VS 2019 ではうまく動作するが,2017 など他のものではエラーになってしまう.

---------------------------
GLSm140: devenv.exe - アプリケーション エラー
---------------------------
0x000000006359C044 の命令が 0x0000000000000000 のメモリを参照しました。メモリが read になることはできませんでした。
プログラムを終了するには [OK] をクリックしてください
プログラムをデバッグするには [キャンセル] をクリックしてください
---------------------------
OK キャンセル
---------------------------
Is this 投稿 useful?
Useful
Useless
0 of 0 people say this 投稿 is useful.