主对话框如何控制非模式对话框控件不可用

主对话框怎么控制非模式对话框控件不可用
本帖最后由 VisualEleven 于 2013-08-23 09:45:04 编辑
void CdriverDlg::OnCommandTestmessages()
{
TestMessages *dlg=new TestMessages();
dlg->Create(IDD_DIALOG1,this);
dlg->ShowWindow(SW_SHOW);
}//创建子对话框

void CdriverDlg::OnBnClickedButton2()
{
        TestMessages plg;
        plg.m_button.EnableWindow(TRUE);}//这样控制子对话框按钮不可用失败,怎么实现呢?

------解决方案--------------------
本帖最后由 VisualEleven 于 2013-08-23 09:45:15 编辑
TestMessages *dlg,这个设置为主窗口类对象,下面的代码规范不好,不过也不影响使用

void CdriverDlg::OnCommandTestmessages()
{
dlg=new TestMessages();
dlg->Create(IDD_DIALOG1,this);
dlg->ShowWindow(SW_SHOW);
}//创建子对话框

void CdriverDlg::OnBnClickedButton2()
{
        dlg->m_button.EnableWindow(TRUE);}//这样控制子对话框按钮不可用失败,怎么实现呢?

------解决方案--------------------
将TestMessages类对象定义为CdriverDlg类的成员变量
------解决方案--------------------
引用:
Quote: 引用:

TestMessages *dlg,这个设置为主窗口类对象,下面的代码规范不好,不过也不影响使用

void CdriverDlg::OnCommandTestmessages()
{
dlg=new TestMessages();
dlg->Create(IDD_DIALOG1,this);
dlg->ShowWindow(SW_SHOW);
}//创建子对话框

void CdriverDlg::OnBnClickedButton2()
{
        dlg->m_button.EnableWindow(TRUE);}//这样控制子对话框按钮不可用失败,怎么实现呢?

试了下,这样可行哦,谢谢哦,有一个问题是当子对话框没有打开时点击主对话框按钮dlg->m_button.EnableWindow(TRUE);}//这句出错,应该是子对话框按钮在没有打开时是true的吧,冲突了,怎么处理呢?

先判断子对话框指针是否为空,如果不为空再操作
if(dlg!=NULL)
...