MFC---分页技术

来源:互联网 发布:飞行器仿真软件 编辑:程序博客网 时间:2024/05/29 03:51

分页技术是指父窗口中包含多个子窗口页面,我们通过点击上一页、下一页来进行页面的切换。

1、新建一个对话框应用程序:“对话框分页”,并且新建3个对话框作为3个页面,设置3个对话框的属性:child、无边框 等。三个对话框的ID分别为:IDD_P1、IDD_P2、IDD_P3

2、将3个新建的对话框分别关联3个类:CPage1、CPage2、CPage3

3、头文件包含、新建三个类对象:

#pragma once#include "Page1.h"#include "Page2.h"#include "Page3.h"// C对话框分页Dlg 对话框class C对话框分页Dlg : public CDialogEx{public:CPage1 m_p1;CPage2 m_p2;CPage3 m_p3;int m_nSel;//当前选中页的索引 0、1、2......void SelectPage();//翻页函数

4、在初始化函数OnInitDialog()中进行分页对话框的创建和位置的设定:

BOOL C对话框分页Dlg::OnInitDialog(){CDialogEx::OnInitDialog();// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);// 设置大图标SetIcon(m_hIcon, FALSE);// 设置小图标// TODO: 在此添加额外的初始化代码m_p1.Create(IDD_P1);m_p2.Create(IDD_P2);m_p3.Create(IDD_P3);CRect r,r1;GetClientRect(&r1);GetDlgItem(IDC_NEXT)->GetWindowRect(&r);ScreenToClient(&r);r1.bottom = r.top;m_p1.MoveWindow(&r1);m_p2.MoveWindow(&r1);m_p3.MoveWindow(&r1);m_p1.ShowWindow(SW_SHOW);m_nSel = 0;GetDlgItem(IDC_PRE)->EnableWindow(FALSE);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE}

5、上一页、下一页响应函数以及SelectPage()函数的完善:

void C对话框分页Dlg::SelectPage()//翻页封装函数{int i = 0;CWnd* ps[] = {&m_p1,&m_p2,&m_p3};while (i < (sizeof(ps)/sizeof(ps[0]))){ps[i]->ShowWindow(i == m_nSel?SW_SHOW:SW_HIDE);i++;}ps[m_nSel]->SetFocus();//给当前页设置焦点GetDlgItem(IDC_NEXT)->EnableWindow(m_nSel < 2);GetDlgItem(IDC_PRE)->EnableWindow(m_nSel);}void C对话框分页Dlg::OnBnClickedPre()//上一页{if (m_nSel){--m_nSel;SelectPage();}}void C对话框分页Dlg::OnBnClickedNext()//下一页{if (m_nSel < 2){++m_nSel;SelectPage();}}

运行结果:




原创粉丝点击