比如新增加一个类,在类中需要调用对话框中的一个函数
或者在普通函数(而非对话框成员函数)中设置对话框控件
归根结底,就是需要先获取对话框的指针
方法1:(其实两个方法一样,写法不同而已)
//直接获取
CDlg* pDlg = (CDlg*)theApp.m_pMainWnd;
if (NULL != pDlg)
pDlg->EnableMainMenu(bTrue);
//如果有单例模式
CSingleton<CLogWrapper>::Instance()
方法2:
//需要包含对话框的app和dlg头文件
CApp* pApp = dynamic_cast<CApp*>(AfxGetApp());
if (NULL != pApp)
{
IDlgStateSyncMag* pS = dynamic_cast<IDlgStateSyncMag*>(pApp->GetMainWnd());
//sStationDlgStationParam.pDlgStateSyncMag = (IDlgStateSyncMag *)pS;
}
补充说明:(2019年4月8日)
以上方法适用于主窗口,如果是在子窗口的话,就会无反应或者崩溃,可以使用以下方法,仅供参考:
//方法一:
HWND hwnd = ::FindWindow(NULL,_T("Dialog"));
SetWindowTextW(GetDlgItem(hwnd,IDC_EDIT1_TT), _T("biubiu"));
//方法二:
HWND mainHwnd = ::GetForegroundWindow();
SetWindowTextW(GetDlgItem(mainHwnd, IDC_EDIT1_TT), _T("biubiu"));