mfc怎么给cpropertypage指定主窗口

 我来答
ahcc08
2016-08-22 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51940
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部

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);

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式