class MyApp : public CWinApp {
afx_msg OnPrefrences();
};
当用户从菜单栏中选择工具->首选项时,将调用 OnPrefrences()。
现在在一个对话框中(比如说 DlgX)有一个按钮,点击这个按钮我需要打开 Preference 对话框,它实际上有很多窗格,但是在这里我需要通过选择这些窗格中的一个来打开 Preference 对话框。同样在那个特定的窗格中,我需要隐藏一些控件,只有当它通过这个对话框而不是通过菜单打开时。
所以我在 MainFrm 类中创建了一个变量(比如 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中的事情变得混乱。此外,我正在从事的项目是遗留项目,因此我无法进行太多更改。
有什么模式可以处理这种情况吗?
谢谢