1.弹出式Tab属性页
(1).新建2个对话框IDD_DIALOG1和IDD_DIALOG2,在上面随便放点什么控件之类的;用向导为它们添加类CPage1和CPage2,基类都是CPropertyPage.
(2).用向导添加新类CProSheet,基类为CPropertySheet,在ProSheet.h中加入
// ProSheet.h : header file
#include "Page1.h"
#include "Page2.h"
class CProSheet : public CPropertySheet
{
public:
CPage1 m_page1;//
CPage2 m_page2;//
}
在CProSheet.cpp里两个构造函数处添加:
//CProSheet.cpp
CProSheet::CProSheet()
{
AddPage(&m_page1);
AddPage(&m_page2);
}
CProSheet::CProSheet()
{
AddPage(&m_page1);
AddPage(&m_page2);
}
(3).好了,现在可以在你想调用的地方调用这个属性页了:比如你想在C***::Fun()里调用,就在C***.cpp的顶部加入#include "ProSheet.h",然后
void C***::Fun()
{
CProSheet proSheet("属性页测试",this,0);
proSheet.DoModal();
}这样,你调用Fun()的时候就可以看到效果了.
2.给CPropertySheet的页标上添加图标
Step1:创建或导入2个位图资源(假设16x16大小):IDB_BITMAP1,IDB_BITMAP2 用来做标签上的图标Step2:为CProSheet类(你从CPropertySheet派生的类)增加以下成员变量及函数
CImageList m_imageList;
void SetPageTitle(int nPage, int nImage, CString strTitle="");
Step3:
BOOL CProSheet::OnInitDialog()
{
BOOL bResult = CProSheet::OnInitDialog();
// TODO: Add your specialized code here
//建立图象列表
m_imageList.Create(16, 16, ILC_COLORDDB | ILC_MASK, 0, 1);
CBitmap bm1,bm2;
//载入位图资源
bm1.LoadBitmap(IDB_BITMAP1);
bm2.LoadBitmap(IDB_BITMAP2);
//添加图象到列表
m_imageList.Add(&bm1, RGB(192, 192, 192)); //图标1
m_imageList.Add(&bm2, RGB(192, 192, 192)); //图标2
GetTabControl ()->SetImageList (&m_imageList);
proSheet->SetPageTitle(0,0); //属性页标签1加图标1
proSheet->SetPageTitle(1,1); //属性页标签2加图标2
return bResult;
}
step 4:
void CProSheet::SetPageTitle(int nPage, int nImage, CString strTitle)
{
TC_ITEM item;
//item.mask = TCIF_TEXT|TCIF_IMAGE; //设置图标+文字
item.mask = TCIF_IMAGE; //只设置图标
item.iImage = nImage;
// item.pszText = strTitle.GetBuffer(0); //设置文字
GetTabControl ()->SetItem (nPage, &item);
//要设置文字时就将上面2行有注释符的代码前的注释符去掉
}