MFC学习 标签页与属性页及各常用控件使用
参考 http://blog.csdn.net/anye3000/article/details/6700023
CTabCtrl:
BOOL CTabTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 m_TabCtrl.InsertItem(0, "表一"); m_dlgTabl1.Create(IDD_DIALOG1, &m_TabCtrl); //设立页面在控件中的范围 CRect rc; m_TabCtrl.GetClientRect(rc); rc.top += 20; rc.bottom -= 1; rc.left += 1; rc.right -= 1; m_dlgTabl1.MoveWindow(rc); m_dlgTabl1.ShowWindow(SW_SHOW); m_TabCtrl.InsertItem(1, "表二"); m_dlgTabl2.Create(IDD_DIALOG2, &m_TabCtrl); m_dlgTabl2.MoveWindow(rc); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE }
在点击标签时要增加事件
void CTabTestDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 switch(m_TabCtrl.GetCurSel()) { case 0: { m_dlgTabl1.ShowWindow(SW_SHOW); m_dlgTabl2.ShowWindow(SW_HIDE); break; } case 1: { m_dlgTabl1.ShowWindow(SW_HIDE); m_dlgTabl2.ShowWindow(SW_SHOW); break; } default: m_dlgTabl1.ShowWindow(SW_SHOW); m_dlgTabl2.ShowWindow(SW_HIDE); } *pResult = 0; }
CPropSheet:
在设置器中添加几个PropertypePage, 分别建立类, 增加OnSetActive(必要)事件处理, OnWinzarNext事件处理
BOOL PropPage2::OnSetActive() { CPropertySheet* pSheet = (CPropertySheet*)GetParent(); pSheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT); return CPropertyPage::OnSetActive(); } LRESULT PropPage2::OnWizardNext() { //Radio分组是以每个分组第一个radio设置属性group为true, 后面的radio不用设置, 都属于这个组, //第二组的第一个radio也是设置group为true, 其它本组radrio不用设置group, 依次类推 if(m_Sel1.GetCheck() == 0 && ((CButton*)GetDlgItem(IDC_RADIO2))->GetCheck() == 0 && ((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck() == 0) { MessageBox("请选择数字1"); return -1; } else if((((CButton*)GetDlgItem(IDC_RADIO4))->GetCheck() == 0) && ((CButton*)GetDlgItem(IDC_RADIO5))->GetCheck() == 0) { MessageBox("请选择数字2"); return -1; } return CPropertyPage::OnWizardNext(); }
在类视图中右击添加一个类, 选择MFC类(不是普通类), 继承选择CPropertySheet, 添加几个PropertypePage派生类成员, PropSheet构造函数加入数据成员.
PropSheet::PropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(pszCaption, pParentWnd, iSelectPage) { AddPage(&m_PropPage1); AddPage(&m_PropPage2); AddPage(&m_PropPage3); AddPage(&m_PropPage4); }
常用控件使用在附件中. 包括单选, 复选按钮, 下拉列表, 进度条,CSpinButton(点了数字加减, 或滚动条移的那种按钮), 滑动条.
另附:孙鑫MFC讲义代码下载