MFC主窗口按钮打开其他窗口,数个窗口来回调用

主窗口点击按钮调用其他窗口

1)插入新的窗口后双击创建好新窗口对应的类

2)在主窗口的文件中include新窗口的头文件

3)在按钮的消息函数中加入如下代码

方法一:

模态对话框,在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息

//创建一个模态对话框  
CTestDialog td;  
td.DoModal();


方法二:

非模态对话框,在程序运行的过程中,若出现了非模态对话框,主窗口还可以发送消息

CTestDialog td;  
td.Create(IDD_DIALOG1); //创建一个非模态对话框  
td.ShowWindow(SW_SHOWNORMAL); //显示非模态对话框

补充完整代码,效果是原窗口关闭,新窗口打开。

窗口一

CDialog::OnOK(); //这是完成关闭窗口
UpdataData(true); //MFC刷新窗口数据
Cshow dlg; //定义dlg
dlg.m_a2 = m_a1; //这个俩个窗口按钮来回调用定义的,正常不会用
dlg.DoMondal(); //显示窗口
UpdataData(false);//MFC刷新窗口数据

窗口二

CDialog::OnOK(); //这是完成关闭窗口
UpdataData(true); //MFC刷新窗口数据
dlg.m_a2 = m_a2 + 6; //这个俩个窗口按钮来回调用定义的,正常不会用,返回第一个对话框+6
CcanTestDlg dlg; //定义dlg
dlg.m_a1 = m_a2; //这个俩个窗口按钮来回调用定义的,正常不会用
UpdataData(false);//MFC刷新窗口数据
dlg.DoMondal(); //显示窗口

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MFC多文档编程中,可以通过以下步骤来使用一个按钮打开一个子窗口: 1. 首先,在窗口类(一般是CMainFrame)的头文件中添加一个成员变量,用于保存子窗口对象的指针。例如,声明一个成员变量CChildFrame* m_pChildFrame。 2. 在窗口类的初始化函数OnInitInstance()中创建子窗口对象。可以使用CreateNewWindow()函数来创建子窗口。例如,m_pChildFrame = (CChildFrame*)RUNTIME_CLASS(CChildFrame)->CreateObject(); 3. 在窗口类的消息映射中添加一个响应按钮点击事件的函数。例如,添加一个响应按钮点击事件的函数OnOpenChildWindow()。 4. 在响应按钮点击事件的函数OnOpenChildWindow()中,使用m_pChildFrame->ActivateFrame()来激活并显示窗口。例如, void CMainFrame::OnOpenChildWindow() { if (m_pChildFrame != nullptr) { m_pChildFrame->ActivateFrame(); } } 5. 在窗口的视图类(一般是CView或者CMDIChildWnd)中创建一个按钮对象。可以使用Create()函数创建按钮,并设置位置、样式和文字等属性。例如, BOOL CMyView::CreateButton() { CRect rectButton(10, 10, 110, 40); m_btnOpenChild.Create(_T("打开窗口"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rectButton, this, IDC_OPEN_CHILD_BUTTON); return TRUE; } 6. 在窗口的视图类中添加一个响应按钮点击事件的消息映射。例如, ON_BN_CLICKED(IDC_OPEN_CHILD_BUTTON, CMyView::OnOpenChildWindow) 7. 在响应按钮点击事件的函数OnOpenChildWindow()中,调用窗口类的函数来打开窗口。例如, void CMyView::OnOpenChildWindow() { CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd(); pMainFrame->OnOpenChildWindow(); } 通过以上步骤,就可以在MFC多文档编程中使用一个按钮打开一个子窗口了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值