class MyApp : public CWinApp {
afx_msg OnPrefrences();
};
OnPrefrences() は、ユーザーがメニューバーからツール -> 設定を選択したときに呼び出されます。
現在、1 つのダイアログ (DlgX と言う) に 1 つのボタンがあり、これをクリックすると、実際には多くのペインがある環境設定ダイアログを開く必要がありますが、ここでは、これらのペインの 1 つをアクティブとして選択して環境設定ダイアログを開く必要があります。また、その特定のペインでは、メニューからではなく、このダイアログから開いたときにのみ、一部のコントロールを非表示にする必要があります。
そのため、MainFrm クラスに 1 つの変数 (たとえば m_varX) を作成しました。
void DlgX::OnButtonXClick()
{
CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
if(pFrame)
{
pFrame->m_varX = TRUE;
((CMyApp*)(AfxGetApp()))->OnPrefrences();
pFrame->m_varX = FALSE;
}
}
そして、DlgX のボタン ハンドラーで、この m_varX を TRUE にして OnPreference() を呼び出し、この設定ダイアログを閉じた後、m_varX を FALSE にしました。
これはすべて正常に機能しています...しかし、問題は、mainFrmで物事が混乱することです。また、私が取り組んでいるプロジェクトはレガシーなものであるため、多くの変更を加えることができません。
そのような場合を処理するために利用できるパターンはありますか?
ありがとう