K
KoYamaさん (8o4hkr6m)2024/2/2 03:45 (No.93304)削除0161.面白いバグ(2)。
メッセージマップ「ON_UPDATE_COMMAND_UI(ID_FILE_NEW, OnUpdateFileNew)」を、追加しました。このメッセージ・ハンドラは「CMainFrame::OnUpdateFileNew」です。
これは、メインフレームメニュー「01.新規作成(N)」の対応コードで、メニューが開く直前に実行されるコードで、通常ここで、このメニュー項目に「チェックマーク」を付けたり、メニュー項目を使用可能にしたり、使用不可能にしたり、します。
それで、当Myアプリを「/Open_2,8,9,10 C:\Data\その他\メモ\当面の話題.txt」のような起動オプションで起動すると、後半のフル・パスが示すText中、記述されている、複数のフル・パスのうちの、「2,8,9,10」番目のファイルを、一括して開くのですが、この開く動作が完全に完了する迄の間に、新たに手動で、新規Textを開くと、コードが競合して、エラー停止になる。というバグを、長年かかえていたのですが、このバグが、今回解決しました。
つまり、この一括Openの最初に「CComFlg::m_bOpnCldStr」を「on」にしてあり、最後に「CComFlg::m_bOpnCldEnd」を「on」にしてあって、これらが、共に「off」か、またはともに「on」の場合に限り、「CMainFrame::OnUpdateFileNew」にて「01.新規作成(N)」を利用可能にしたのです。
これは、随分要約した記述なのですが、つまりは、もっと込み入った事情が多数有り、バグの現象がはっきりした事も、バグの原因がはっきりした事も、対応フラグが2つ有る事も、色々なコード構成と関連が有っての事ですが、つまりは、こういう事です。