CDialog与CPropertySheet

En•Nam 2014-07-02 06:46:28
我已经学会了创建Dialog模版做为CPropertyPage添加到CPropertySheet当中,然后在Command消息响应中用DoModal()以显示。然而我不知道的是,如何在程序主窗口或Dialog中的指定位置显示CPropertySheet,并自定义其宽与高,及当窗口发生大小改变时,如何让其跟随改变大小。请教。
...全文
200 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcf_reader 2014-08-08
  • 打赏
  • 举报
回复
引用 7 楼 vivikey 的回复:
[quote=引用 4 楼 VisualEleven 的回复:] 别用CPropertySheet了,用CTabCtrl+ CDialog吧
CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。[/quote] 4楼回答很到位,我一直这样用
向立天 2014-08-05
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
dvlinker 2014-07-05
  • 打赏
  • 举报
回复
需要在OnSize中动态去排列子窗口,根据相对位置动态计算子窗口的坐标,动态的移动子窗口
Eleven 2014-07-03
  • 打赏
  • 举报
回复
引用 7 楼 vivikey 的回复:
[quote=引用 4 楼 VisualEleven 的回复:]
别用CPropertySheet了,用CTabCtrl+ CDialog吧


CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。[/quote]

你可以多创建几个对话框嘛,Child风格的
En•Nam 2014-07-03
  • 打赏
  • 举报
回复
引用 4 楼 VisualEleven 的回复:
别用CPropertySheet了,用CTabCtrl+ CDialog吧
CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。
向立天 2014-07-03
  • 打赏
  • 举报
回复
非模态调用用showwindow和movewindow 适配可以参考http://blog.csdn.net/xianglitian/article/details/5667015
zgl7903 2014-07-03
  • 打赏
  • 举报
回复
Propertysheet 在创建之前要AddPage,
Eleven 2014-07-03
  • 打赏
  • 举报
回复
别用CPropertySheet了,用CTabCtrl+ CDialog吧
En•Nam 2014-07-03
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
CPropertySheet::Create 用WS_CHILD 风格 在WM_SIZE消息中 MoveWindow CPropertySheet::GetTabControl 可获取CTableCtrl CTableCtrl GetClientRect 然后调整子页大小
你好,我在Dlg的OnCreate中用m_addSheet.Create(this,WS_CHILD |WS_VISIBLE ,WS_EX_OVERLAPPEDWINDOW); 但运行以后CPropertySheet并未显示,如果调用m_addSheet. ShowWindow(SW_SHOW),编译不报错在运行时就会弹出错误。
信阳毛尖 2014-07-03
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
CPropertySheet::Create 用WS_CHILD 风格 在WM_SIZE消息中 MoveWindow CPropertySheet::GetTabControl 可获取CTableCtrl CTableCtrl GetClientRect 然后调整子页大小
+1
zgl7903 2014-07-03
  • 打赏
  • 举报
回复
CPropertySheet::Create 用WS_CHILD 风格 在WM_SIZE消息中 MoveWindow CPropertySheet::GetTabControl 可获取CTableCtrl CTableCtrl GetClientRect 然后调整子页大小
信阳毛尖 2014-07-03
  • 打赏
  • 举报
回复
引用 9 楼 vivikey 的回复:
[quote=引用 5 楼 zgl7903 的回复:] Propertysheet 在创建之前要AddPage,
哦,是的,我忘了。现在可以显示出来了。但是是在Dlg的左上角显示的,把原有的控件给覆盖掉了。能否把它放在另一个可视控件里?这样不运行也能控件好布局。[/quote] 你需要MoveWindow的啊,否则默认都是左上角,会把TAB覆盖掉一部分的 Propertysheet的init函数中 RECT rt = {0}; ::GetClientRect(m_hWnd,&rt); rt.top += 21; rt.bottom -= 1; rt.left += 1; rt.right -= 1; m_ProPage1.MoveWindow(&rt); m_ProPage2.MoveWindow(&rt);
Eleven 2014-07-03
  • 打赏
  • 举报
回复
引用 11 楼 vivikey 的回复:
[quote=引用 6 楼 xianglitian 的回复:] 非模态调用用showwindow和movewindow 适配可以参考http://blog.csdn.net/xianglitian/article/details/5667015
谢谢,但我并不想把按键什么的做大小的改变。我只改变一部分控件的大小。[/quote] EASYSIZE, codeproject上搜索EASYSIZE
向立天 2014-07-03
  • 打赏
  • 举报
回复
引用 11 楼 vivikey 的回复:
[quote=引用 6 楼 xianglitian 的回复:] 非模态调用用showwindow和movewindow 适配可以参考http://blog.csdn.net/xianglitian/article/details/5667015
谢谢,但我并不想把按键什么的做大小的改变。我只改变一部分控件的大小。[/quote]原理是一样的 都是按着某种规则MoveWindow
En•Nam 2014-07-03
  • 打赏
  • 举报
回复
引用 6 楼 xianglitian 的回复:
非模态调用用showwindow和movewindow 适配可以参考http://blog.csdn.net/xianglitian/article/details/5667015
谢谢,但我并不想把按键什么的做大小的改变。我只改变一部分控件的大小。
En•Nam 2014-07-03
  • 打赏
  • 举报
回复
引用 8 楼 VisualEleven 的回复:
[quote=引用 7 楼 vivikey 的回复:] [quote=引用 4 楼 VisualEleven 的回复:] 别用CPropertySheet了,用CTabCtrl+ CDialog吧
CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。[/quote] 你可以多创建几个对话框嘛,Child风格的[/quote] 能行么?我去查一下MSDN先。
En•Nam 2014-07-03
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
Propertysheet 在创建之前要AddPage,
哦,是的,我忘了。现在可以显示出来了。但是是在Dlg的左上角显示的,把原有的控件给覆盖掉了。能否把它放在另一个可视控件里?这样不运行也能控件好布局。

15,979

社区成员

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

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