属性页如何能够以对话框的形式使用

blldw 2010-09-17 11:39:30
CPorpertyPage从CDialog派生,只是在创建属性页资源时,其style属性被设置为child。
一个已经创建的属性页,我想以对话框的形式使用,代码如下:

CMyPropertyPage dlgPage;
dlgPage.ModifyStyle(WS_CHILD, WS_POPUP); // 去掉child风格,取之以POPUP风格
dlgPage.DoModal();

运行时,断言错误,经调试发现m_hWnd的值为NULL。

请问如何将属性页以对话框的形式使用,谢谢!
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-10-16
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
Eleven 2010-09-17
  • 打赏
  • 举报
回复
dlgPage.ModifyStyle(WS_CHILD, WS_POPUP); // 去掉child风格,取之以POPUP风格
这个加的地方不对,你的窗口还没有创建出来,放到CMyPropertyPage的OnInitDialog函数中
一名程序员 2010-09-17
  • 打赏
  • 举报
回复
我想起一个办法,你在资源rc中看普通dlg的style,然后把这个属性加入到property page中,看这样行不?
blldw 2010-09-17
  • 打赏
  • 举报
回复
还是不行,似乎还是作为子窗体显示,依然挂起的样子
Eleven 2010-09-17
  • 打赏
  • 举报
回复
ModifyStyle(WS_CHILD|WS_DISABLED, WS_VISIBLE|WS_OVERLAPPED);
ModifyStyleEx(0, WS_EX_DLGMODALFRAME);

试试这样,在你的CMyPropertyPage的OnInitDialog函数中
blldw 2010-09-17
  • 打赏
  • 举报
回复
不行,虽然没有断言异常了,但是弹出后看不到窗体,被挂起了一样

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧