CPropertysheet类的Create失败
mfc吧
全部回复
仅看楼主
level 4
这里是继承的相关类
class CPage :public CPropertyPage//页面
{
public:
CPage(UINT id) :CPropertyPage(id){}
protected:
DECLARE_MESSAGE_MAP()
};
class NPropertySheet :public CPropertySheet//非模态类属性表
{
public:
NPropertySheet(LPCTSTR pszCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0){}
protected:
DECLARE_MESSAGE_MAP()
virtual void OnOK(){}
virtual void OnCancel(){}
};
然后我创建了一个非模态的对话框
在对话框的WM_INITDIALOG消息中添加页面,代码如下
BOOL MyDialog::OnInitDialog()
{
ps = new NPropertySheet(L"ImageList");
CPage Page1(IDD_DIALOG1), Page2(IDD_DIALOG2);
ps->AddPage(&Page1);
ps->AddPage(&Page2);
ps->Create(this, WS_CHILD | WS_VISIBLE);
return TRUE;
}
效果图:当我点Page2的时候报错,并且每一个页面没有正确显示子控件。不知道哪里错了。
2015年02月09日 08点02分 1
level 4
奇怪的是。我换成DoModule就完全正确了。诶。坑爹的MFC,第一次接触这封装了的玩意,以前都是用SDK来编写。现在这样搞,连错误在哪里都无法知道,查阅了MSDN的说明,也没有解决。气死了!
2015年02月09日 08点02分 2
level 4
此吧没有人吗
2015年02月09日 08点02分 3
level 4
此吧没有人吗
2015年02月09日 08点02分 4
level 4
擦!终于找到原因。和MSDN源代码对照了一下,发现那货是用new创建的。原来用局部变量会自动调用其析构函数。!好了。问题解决。
2015年02月09日 08点02分 5
1