带属性页的对话框

以带2个属性页的对话框为例 (VS2008)

1. 在资源试图 添加三个 对话框。修改三个对话框的ID名字为合适的名字。

2. 修改两个属性页对话框的属性。  Style -- Child;  Border -- None 。

3. 给三个对话框添加三个类。  都是CDialog的子类。  右击点击资源--》 添加类 即可。

4. 给基础对话框(我们这里表示用来包含属性页的哪个对话框)添加一个Tab Control 控件, 并且给Tab Control 添加控件变量m_tab

 5. 在对话框的头文件中添加


CGeneralSettingPage general_setting_page_;
CEffectSettingPage effect_setting_page_;

5. 重写对话框的InitDialog() 函数。  添加

    // TODO:  在此添加额外的初始化
    m_tab.InsertItem(0, _T("通用设置"), 0);
    m_tab.InsertItem(1, _T("运行设置"), 0);
    general_setting_page_.Create(IDD_OLE_PAGE_GENERAL_SETTING, &m_tab);
    effect_setting_page_.Create(IDD_OLE_PAGE_EFFECT_SETTING, &m_tab);
    CRect rect;
    m_tab.GetClientRect(rect);
    rect.DeflateRect(2, 30, 2 ,2);
    general_setting_page_.MoveWindow(rect);
    effect_setting_page_.MoveWindow(rect);
    general_setting_page_.ShowWindow(SW_SHOW);

6. 双击基础对话框里的Tab Control 控件, 生成afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult); 函数

7. 在函数里添加代码

void CSystemSetting::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码

	if (m_tab.GetCurSel() == 0)
	{
		general_setting_page_.ShowWindow(SW_SHOW);
		effect_setting_page_.ShowWindow(SW_HIDE);
	}
	else if (m_tab.GetCurSel() == 1)
	{
		general_setting_page_.ShowWindow(SW_HIDE);
		effect_setting_page_.ShowWindow(SW_SHOW);
	}

	*pResult = 0;
}

编译 --》 运行 完成

原文地址:https://www.cnblogs.com/okgogo2000/p/3806510.html