如何设置属性页的大小尺寸?
使用WTL的CPropertySheetImpl和CPropertyPageImpl做了一个属性页,CPropertyPageImpl其时就是一个自己画的对话框,但当这个对话框在CPropertySheetImpl里显示时,当对话框过于宽时,只能左边的一部分,请问高手们怎么办?
代码大致如下:
class CSend : public CPropertySheetImpl<CSend>
{
public:
CPageOne Page1;
CPageTwo Page2;
CPageThree Page3;
CSend();
virtual ~CSend();
BEGIN_MSG_MAP(CSend)
MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCTLColorDlg)
COMMAND_ID_HANDLER(IDOK, OnOK)
CHAIN_MSG_MAP(CPropertySheetImpl<CSend>)
END_MSG_MAP()
LRESULT OnCTLColorDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
public:
HBRUSH m_hbr;
};
/////////////////////////////////////////////////
CSend::CSend()
{
m_psh.dwFlags |= PSH_NOAPPLYNOW;
Page1.SetTitle("Send Page1");
AddPage(Page1);
Page2.SetTitle("Send Page2");
AddPage(Page2);
Page3.SetTitle("Send Page3");
AddPage(Page3);
SetActivePage(0);
m_hbr=CreateSolidBrush(RGB(155, 204, 255));
}
CSend:: ~CSend()
{
}
LRESULT CSend::OnCTLColorDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CenterWindow(GetParent());
return (LRESULT)m_hbr; // for dialog
}
LRESULT CSend::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
bHandled = FALSE;
return 0;
}
////////////////////////////////////////////////////////
其中一个Page的代码如下:
class CPageThree : public CPropertyPageImpl<CPageThree>
{
public:
enum { IDD = IDD_PROP_PAGE3 };
CPageThree();
~CPageThree();
BEGIN_MSG_MAP(CPageThree)
MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCTLColorDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCTLColorStatic)
CHAIN_MSG_MAP(CPropertyPageImpl<CPageThree>)
END_MSG_MAP()
public:
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnCTLColorDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCTLColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
private:
HBRUSH m_hbr;
};