MFC切换子界面

在Dialog程序中,子界面通常是一些子控件,这些控件在切换的时候通常是隐藏其他,显示要显示的控件来做到的。

下面的例子有两个按钮,分别控制两个静态文本的显示(点击按钮1会显示文本1,点击文本2会显示文本2)

实现分为如下几个步骤:
1 给Dialog添加静态文本和按钮成员变量。

private:
CButton m_btn_1;
CButton m_btn_2;
CStatic m_static_1;
CStatic m_static_2;

2 程序初始化的时候动态创建控件

    m_btn_1.Create(_T("动态按钮1"),WS_CHILD | WS_VISIBLE,CRect(20,10,100,40),this,IDC_MYBTN_1);
    m_btn_2.Create(_T("动态按钮2"),WS_CHILD | WS_VISIBLE,CRect(110,10,190,40),this,IDC_MYBTN_2);


    m_static_1.Create(_T("hello world1"),WS_CHILD|WS_BORDER|SS_SIMPLE |SS_CENTER|WS_VISIBLE,CRect(20,50, 190, 150),this);
    m_static_2.Create(_T("hello world2"),WS_CHILD|WS_BORDER|SS_SIMPLE |SS_CENTER,CRect(20,50, 190, 150),this);

3 添加动态按钮机器响应函数的过程参考:
http://blog.youkuaiyun.com/calmreason/article/details/43791757

4 在响应函数中切换控件

void CmfcDlg::ClickBtn1()
{
    m_static_1.ShowWindow(TRUE);
    m_static_2.ShowWindow(FALSE);
    m_static_1.SetWindowText(_T("111111111111111111111111111111111111111111"));
}

void CmfcDlg::ClickBtn2()
{
    m_static_1.ShowWindow(FALSE);
    m_static_2.ShowWindow(TRUE);
    m_static_2.SetWindowText(_T("2222222222222222222222222222222222222222222"));
}

这里写图片描述
这里写图片描述

MFC(Microsoft Foundation Classes)中,要在界面之间实现界面切换,你可以采用以下步骤: 1. **创建框架窗口** (MDI or SDI): MFC支持两种模型——MDI(Multiple Document Interface,多文档界面),其中主窗口包含多个窗口;或SDI(Single Document Interface,单文档界面),只有一个活动窗口。你需要选择适合场景的一种。 2. **设计界面** (Dialogs or Views): 使用MFC的Dialog或View类作为窗口的基础。对于复杂的界面,可以考虑使用自定义控件(Custom Control)或者用户界面容器(User Interface Containers)如Frame、Panel等。 3. **添加切换逻辑** (Code Implementation): 在适当的地方编写代码来控制界面显示隐藏。例如,在MDI中,你可以通过`DockControl()`函数将一个对话框从一个窗口移动到另一个窗口。而在SDI中,通常会有一个“菜单”或工具栏选项触发视图的切换。 4. **事件处理或消息映射** (Message Map): 当用户点击按钮或响应菜单项时,你可以设置相应的消息映射(Message Map)来切换界面。也可以使用虚函数和派生类来实现动态绑定,使得在运行时可以根据需要切换不同的功能。 5. **切换响应** (OnSwitchToView or OnActivateView): 这些预设的消息处理器可以在视图切换时执行特定的行为,比如更新数据或者设置新的界面状态。 ```cpp // 示例代码片段 void CMyMainFrame::OnActivateView(CView* pActivateView, CView* pDeactivateView) { if (pActivateView == &m_View1) { // 视图1激活的处理... } else if (pActivateView == &m_View2) { // 视图2激活的处理... } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值