获得对话框指针:
假设CMyDialog为对话框类
1.先在CMyDialog.cpp中声明一个全局变量CMyDialog* pDlg;
2在OnInitDialog()的时候,pDlg = this;
3.在别的类使用他的时候,在别的类的Cpp中添加extern CMyDialog* pDlg;
4.pDlg->yourfunction();
如何使用Tab Control 控件 设置现有页面
void CPage1::OnBnClickedButton1()
{
int temp=0;
if(GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2)==IDC_RADIO1)
temp++;
if(GetCheckedRadioButton(IDC_RADIO3,IDC_RADIO4)==IDC_RADIO3)
temp++;
if(GetCheckedRadioButton(IDC_RADIO5,IDC_RADIO6)==IDC_RADIO5)
temp++;
//获取View类指针
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CintelligentjudgingView *pView=(CintelligentjudgingView *)pMain->GetActiveView();
if(temp>=2)
{
extern CQue *myquedlg;
pView->type[0]++;
MessageBox((CString)"Please continue to next step!");
CRect r;
myquedlg->m_tabcontrol.GetClientRect(&r);
myquedlg->m_tabcontrol.SetCurSel(1);
myquedlg->page1.SetWindowPos (NULL,10,30,r.right-20,r.bottom-40,SWP_HIDEWINDOW);
myquedlg->page2.SetWindowPos (NULL,10,30,r.right-20,r.bottom-40,SWP_SHOWWINDOW);
myquedlg->page3.SetWindowPos (NULL,10,30,r.right-20,r.bottom-40,SWP_HIDEWINDOW );
}
// TODO: 在此添加控件通知处理程序代码
}
本人在对话框工程中的实例:
在要获取的对话框GSMSystemDlg.cpp文件中添加:
CGSMSystemDlg *pGSMSystemDlg=NULL; //定义一个CGSMSystemDlg类的全局指针
在CGSMSystemApp类的CPP文件中添加:
BOOL CGSMSystemApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
/************************************************************************/
//增加一个登陆框
CLoginDlg m_LoginDlg;
if (m_LoginDlg.DoModal()!=IDOK) //如果登陆框登录成功则返回IDOK,否则返回FALSE
{
return FALSE;
}
/************************************************************************/
CGSMSystemDlg dlg;
m_pMainWnd = &dlg;
extern CGSMSystemDlg *pGSMSystemDlg;//引用CGSMSystemDlg类中定义的全局指针
pGSMSystemDlg=&dlg; //获取到主窗口的指针
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此处放置处理何时用“确定”来关闭
// 对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用“取消”来关闭
// 对话框的代码
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}