CPropertySheet 与CPropertyPage 的基本使用
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大小的目的
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的CPropertySheet 与CPropertyPage 的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nyoj 586 疯牛(二分+贪心)
- 下一篇: 控制~李雅普诺夫稳定性