class MyApp : public CWinApp {
afx_msg OnPrefrences();
};
当用户从菜单栏中选择工具 - >首选项时,会调用OnPrefrences()。在类实例中共享变量
现在在一个对话框中(说DlgX)有一个按钮,在点击这个我需要打开首选项对话框,其实有很多窗格,但在这里我需要打开首选项对话框选择一个这些窗格为活性。另外在那个特定的窗格中,我只需要隐藏一些控件,只有当它通过这个对话框而不是通过菜单打开时。
所以我在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中的东西变得混乱。此外,我正在从事的项目是遗留项目,所以我无法做出太多改变。
有没有可用于处理这种情况的模式?
感谢
好的,谢谢,这将做! 更好地改变它,这是我在做什么 void OnPreferences(BOOL bShowAll = TRUE); 我想知道如果MFC提供了一些类似东西的utils类... – dearvivekkumar 2012-07-19 08:47:46