CDialog与CPropertySheet 本帖最后由 vivikey 于 2014-07-02 18:47:40 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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),编译不报错在运行时就会弹出错误。 别用CPropertySheet了,用CTabCtrl+ CDialog吧 Propertysheet 在创建之前要AddPage, 非模态调用用showwindow和movewindow适配可以参考http://blog.csdn.net/xianglitian/article/details/5667015 CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。 本帖最后由 VisualEleven 于 2014-07-03 12:59:25 编辑 哦,是的,我忘了。现在可以显示出来了。但是是在Dlg的左上角显示的,把原有的控件给覆盖掉了。能否把它放在另一个可视控件里?这样不运行也能控件好布局。 CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。你可以多创建几个对话框嘛,Child风格的能行么?我去查一下MSDN先。 谢谢,但我并不想把按键什么的做大小的改变。我只改变一部分控件的大小。原理是一样的都是按着某种规则MoveWindow 谢谢,但我并不想把按键什么的做大小的改变。我只改变一部分控件的大小。EASYSIZE, codeproject上搜索EASYSIZE 哦,是的,我忘了。现在可以显示出来了。但是是在Dlg的左上角显示的,把原有的控件给覆盖掉了。能否把它放在另一个可视控件里?这样不运行也能控件好布局。你需要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); 需要在OnSize中动态去排列子窗口,根据相对位置动态计算子窗口的坐标,动态的移动子窗口 CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。4楼回答很到位,我一直这样用 用windows编程做出来的界面是什么样的? opencv 中视频保存问题 透明的窗口如何做? 如何获得内存中PNG的数据流?(我用CXIMAGE,只要能解决用什么都行) 如何做一个程序,可以打开别的程序并填入帐号密码? 请教软件兼容性问题 类与类间的相互访问 怎么才能把LISTBOX控件分列,并填入相应数据?等! MFC如何编写去噪的程序 Holly杂谈!(附:分值挥泪大赠送!) CRichEdit保存纯文本的问题 进程当前目录是指什么
CPropertySheet::GetTabControl 可获取CTableCtrl
CTableCtrl GetClientRect 然后调整子页大小
但运行以后CPropertySheet并未显示,如果调用m_addSheet. ShowWindow(SW_SHOW),编译不报错在运行时就会弹出错误。
适配可以参考http://blog.csdn.net/xianglitian/article/details/5667015
CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。
哦,是的,我忘了。现在可以显示出来了。但是是在Dlg的左上角显示的,把原有的控件给覆盖掉了。能否把它放在另一个可视控件里?这样不运行也能控件好布局。
CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。你可以多创建几个对话框嘛,Child风格的能行么?我去查一下MSDN先。
谢谢,但我并不想把按键什么的做大小的改变。我只改变一部分控件的大小。原理是一样的
都是按着某种规则MoveWindow
谢谢,但我并不想把按键什么的做大小的改变。我只改变一部分控件的大小。
EASYSIZE, codeproject上搜索EASYSIZE
哦,是的,我忘了。现在可以显示出来了。但是是在Dlg的左上角显示的,把原有的控件给覆盖掉了。能否把它放在另一个可视控件里?这样不运行也能控件好布局。你需要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);
CTabCtrl 各标签页用的是同一个页面窗口。而我所需要的各页面是有不同控件的。4楼回答很到位,我一直这样用