propsheet可以实现类似于windows属性页的的效果
添加属性页
新建一个mfc基于对话框工程,打开资源视图,右键添加资源,在Dialog选项中选择PROPPAGE_LAGE,如下图所示:
添加propsheet相关类
- 添加类CProp
class CProp : public CPropertyPage
{
DECLARE_DYNAMIC(CProp)
public:
CProp(UINT nIDTemplate, UINT nIDCaption, DWORD dwSize);
CProp(LPCTSTR lpszTemplateName, UINT nIDCaption, DWORD dwSize);
virtual ~CProp();
virtual BOOL OnSetActive();
protected:
DECLARE_MESSAGE_MAP()
}
- 和类CPropSheet
class CPropSheet : public CPropertySheet
{
public:
CPropSheet(UINT num, UINT *id, UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
CPropSheet(UINT num, UINT *id, LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
~CPropSheet();
};
可以类比excel进行理解,CProp为一个execl文件中的单一页,CPropSheet即为一个excel文件。
在CPropSheet的构造函数中插入以下代码,然后初始化CPropSheet类即可
CPropSheet::CPropSheet(UINT num, UINT *id, UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
this->m_psh.dwFlags |= PSH_NOAPPLYNOW;
this->m_psh.dwFlags &= ~(PSH_HASHELP);//去掉上下页按钮
this->m_psp.dwFlags &= ~(PSP_HASHELP);//去掉help按钮
AddPage(&CProppage);//将属性页插入属性表
}
效果演示如下图:
上面只展示了部分代码,相关资料包括demo代码请到我<MFC实用技巧>篇最下的网盘链接中下载!