CPropertySheet 与CPropertyPage 的基本使用

c++ 专栏收录该内容
90 篇文章 0 订阅

https://www.cnblogs.com/sylar-liang/p/4173015.html
https://blog.csdn.net/qq_18297675/article/details/51229028 怎么创建
CPropertyPage 是一个从CDialog派生而来的一个类,基本功能与对话框类一样,

CPropertySheet不是一个CDialog的派生类,他是派生自CWnd的,其实它就是一个CDialog上加了一个CTabCtrl的组合类

现在来介绍它的使用。

(1)首先按一般的方法来建立一个基于对话框的MFC程序。这里我叫CProDlg

(2)现在新那两个对话框资源,把它们的属性设为CHILD和THIN,最好CAPTION也有个,分别为它们绑定一个类,这个类要选 为CPropertyPage (当然是CDialog也行,不过这里我介绍这个)

分别命名为CPage1,CPage2

(3)使用向导新建一个MFC类,名字为CMySheet类,父类当然选CPropertySheet。

(4)现在在CProDlg中添加三个指针变量(变量也行是,不过在生成对象时不用new)

分别为:

CMySheet* m_sheet;
CPage1* page1;
CPage2* page2;

在CProDlg的构造函数中加入

m_sheet = new CMySheet(_T(“SHEET”));
page1 = new CPage1;
page2 = new CPage2;

然后初始化

BOOL CProDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码
//property sheet
m_sheet->AddPage(page1);
m_sheet->AddPage(page2);
m_sheet->Create(this, WS_CHILD | WS_VISIBLE , 0);
m_sheet->ModifyStyle(0, WS_TABSTOP | TCS_BOTTOM);
m_sheet->ModifyStyleEx(0, WS_EX_CONTROLPARENT);
CTabCtrl* pTab = m_sheet->GetTabControl();
TCITEM tcitem;
for( int i = 0; i < 2; i++)
{
pTab->SetItem(i, &tcitem);
}

CRect rcSheet;
GetClientRect(&rcSheet);
TRACE(_T(“width: %d, height: %d\n”), rcSheet.Width(), rcSheet.Height());
m_sheet->SetWindowPos(NULL, rcSheet.left, rcSheet.top, rcSheet.Width(), rcSheet.Height(),
SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE);
m_sheet->SetActivePage(0);

现在就可以了,是不是达到了跟原来使用CDialog+CTabCtrl同样的效果呢。

正所谓一题多解嘛

这里,提示下,现在CPropertySheet的大小还不合适,

思路如下:

为CMySheet重载OnInitDialog()

在里面使用MoveWindow来达到控制PropertySheet大小的目的

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值