利用MFC类库中的CTabCtrl类为基础,实现属性页控件类。
class CPropertyPages:public CObject ///////描述属性页页面
{
public:
CString m_strTitle; //属性页标签名
CDialog *m_pDialogPage; //属性页对话框指针
CRect m_Rect; //属性页区域
}
class CSheetTabCtrl::CTabCtrl ////////属性页类
{
public:
CRect m_Rect; //保存属性页区域
UINT m_nCtrlID; //属性页ID
int m_nPages; //记录属性页控件上页面的个数
int m_nActPage; //用来记录当前活动页面的索引
CObArray m_Dialogs; //所有属性页面的指针
}
为了将属性页控件上的制定页面设置为活动转台,为CSheetTabCtrl添加成员函数
class CPropertyPages:public CObject ///////描述属性页页面
{
public:
CString m_strTitle; //属性页标签名
CDialog *m_pDialogPage; //属性页对话框指针
CRect m_Rect; //属性页区域
}
class CSheetTabCtrl::CTabCtrl ////////属性页类
{
public:
CRect m_Rect; //保存属性页区域
UINT m_nCtrlID; //属性页ID
int m_nPages; //记录属性页控件上页面的个数
int m_nActPage; //用来记录当前活动页面的索引
CObArray m_Dialogs; //所有属性页面的指针
}
为了将属性页控件上的制定页面设置为活动转台,为CSheetTabCtrl添加成员函数
SetActivePage(int nPage)。
int CSheetTabCtrl::SetActivePage(int nPage)
{
CPropertyPages *pPropPage; //临时指针
int nN;
if((nPage<0)||(nPage>m_nPages))
nPage=0;
//得到当前活动页面指针
pPropPage=(CPropertyPages *)m_Dialogs.GetAt(m_nActPage);
//将当前活动页面隐藏
nN=pPropPage->m_pDialogPage->SetWindowPos(NULL,
pPropPage->m_Rect.left,pPropPage->m_Rect.top,0,0,
SWP_HIDEWINDOW|SWP_NOSIZE);
int CSheetTabCtrl::SetActivePage(int nPage)
{
CPropertyPages *pPropPage; //临时指针
int nN;
if((nPage<0)||(nPage>m_nPages))
nPage=0;
//得到当前活动页面指针
pPropPage=(CPropertyPages *)m_Dialogs.GetAt(m_nActPage);
//将当前活动页面隐藏
nN=pPropPage->m_pDialogPage->SetWindowPos(NULL,
pPropPage->m_Rect.left,pPropPage->m_Rect.top,0,0,
SWP_HIDEWINDOW|SWP_NOSIZE);
//得到指定页面指针
pPropPage=(CPropertyPages *)m_Dialogs.GetAt(nPage);
//将指定页面显示出来
nN=pPropPage->m_pDialogPage->SetWindowPos(NULL,
pPropPage->m_Rect.left,pPropPage->m_Rect.top,0,0,
SWP_SHOWWINDOW|SWP_NOSIZE);
m_nActPage=nPage; //保存当前活动页面索引
SetCurSel(m_nActPage); //设置选中状态
return TRUE;
}
pPropPage=(CPropertyPages *)m_Dialogs.GetAt(nPage);
//将指定页面显示出来
nN=pPropPage->m_pDialogPage->SetWindowPos(NULL,
pPropPage->m_Rect.left,pPropPage->m_Rect.top,0,0,
SWP_SHOWWINDOW|SWP_NOSIZE);
m_nActPage=nPage; //保存当前活动页面索引
SetCurSel(m_nActPage); //设置选中状态
return TRUE;
}
当单击属性页控件是相应标签时,只要调用此函数就可以将相应页面设置为活动状态。
本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/163745,如需转载请自行联系原作者