社区
界面
帖子详情
MFC中的控件如何动态布局?
caocheng8230
2009-12-17 07:30:26
在我的界面中,有的控件需要在某些条件下隐藏,有的需要显示
有些控件形成一组,这个组在某些情况下一同显示或隐藏
然后控件的位置怎样进行调整?
但是在MFC中好像没有控件容器,不论设置 SetParent还是SetOwner都不能实现一同的消失与显示
是否只能自己用vector或者数组将它们形成一个组,然后循环显示或隐藏
不要告诉我只能一个一个SetWindowRect
...全文
1672
29
打赏
收藏
MFC中的控件如何动态布局?
在我的界面中,有的控件需要在某些条件下隐藏,有的需要显示 有些控件形成一组,这个组在某些情况下一同显示或隐藏 然后控件的位置怎样进行调整? 但是在MFC中好像没有控件容器,不论设置 SetParent还是SetOwner都不能实现一同的消失与显示 是否只能自己用vector或者数组将它们形成一个组,然后循环显示或隐藏 不要告诉我只能一个一个SetWindowRect
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shuirh
2009-12-20
打赏
举报
回复
movewindow
caocheng8230
2009-12-20
打赏
举报
回复
[Quote=引用 28 楼 jameshooo 的回复:]
在没有布局概念的框架下来做,都一样的繁,跟MFC毫无关系,整个窗口机制就是这样的,Form也是一样。可以使用WPF/浏览器控件做界面,这些都提供了不同的布局。
其实用MFC实现一套布局也不算太难,自己实现一个类,例如 CWndLayout,只要把它绑定到一个窗口,它就可以自动添加布局管理功能,同时管理所有子窗口的位置和状态。至于布局管理到底怎么做,完全看需求,可能工作量很小,也可能工作量很大。
[/Quote]
楼上的说法听起来不错,不过我以前没有接触过,有没有这方面的实例?CWndLayout怎样实现?怎样绑定到一个窗口?能否具体点?谢谢!
jameshooo
2009-12-20
打赏
举报
回复
在没有布局概念的框架下来做,都一样的繁,跟MFC毫无关系,整个窗口机制就是这样的,Form也是一样。可以使用WPF/浏览器控件做界面,这些都提供了不同的布局。
其实用MFC实现一套布局也不算太难,自己实现一个类,例如 CWndLayout,只要把它绑定到一个窗口,它就可以自动添加布局管理功能,同时管理所有子窗口的位置和状态。至于布局管理到底怎么做,完全看需求,可能工作量很小,也可能工作量很大。
vclongking
2009-12-20
打赏
举报
回复
用对话框做吧
caocheng8230
2009-12-20
打赏
举报
回复
我知道用MoveWindow,但是有些控件如果隐藏,其位置控件的算法都让人头大。
比如说有A,B,C三组控件
如果A,B,C都不隐藏那还好
如果A隐藏,B和C都得补充A的那个位置
如果B隐藏,C就得补充B的位置
难道这也得自己去实现么?
做程序怎么这么难,做C++程序怎么这么这么难呀!什么都得自己去实现。
dvlinker
2009-12-20
打赏
举报
回复
MoveWindow();
caocheng8230
2009-12-20
打赏
举报
回复
刚才试了试,工作量好大呀!先要分类创建对话框,然后每个对话框还要对应创建封装类,然后要将以前的那些控件变量移到新创建 的类当中,还要处理数据交换。
感觉做好的一个大的界面从上往下进行分解到不同的小的界面真得好复杂呀!
pizicai105
2009-12-19
打赏
举报
回复
MFC做界面本来就不是很好用
像你这样的问题,可以从模块块来看
如果是一组控件要同时显隐,有共同特征,可以将它们组成一个模块
实现方式楼上的几位已经讲得很清楚,用WND封装或用链表管理
MFC其实也可以做得跟其他语言一样强大,你可以自己封装个组件出来,将你的需求进行通用化,
贡献出来,其他人遇到相同问题也就容易解决了
Practise_Think
2009-12-19
打赏
举报
回复
VC不像C#那个简单,得自己一个一个来,很多都是手工的
howema
2009-12-19
打赏
举报
回复
GetDlgItem(IDC_XXXX)->MoveWindow(35, 50, 200,500);
zhou1xp
2009-12-19
打赏
举报
回复
你在Create()的时候用CRect来控制它的位置就行了,我只实现过动态创建按纽并控制它的位置,但原理是这样的
cnzdgs
2009-12-18
打赏
举报
回复
[Quote=引用 6 楼 caocheng8230 的回复:]
我是在子对话框里做的呀!
断点设置在了子对话框的DDX上时,DoDataExchange 函数都没有进去
最后那些控件都是HWnd=0
[/Quote]
子对话框是怎么创建的?应该是构造一个子对话框类对象,然后调用Create函数创建。
jameshooo
2009-12-18
打赏
举报
回复
人人都会遇到这个问题。
没办法,Windows窗口机制中就没有布局概念,控件位置全部需要设置绝对值,无论使用哪种方法,额外的工作量都是少不了的。
caocheng8230
2009-12-18
打赏
举报
回复
[Quote=引用 1 楼 zyq5945 的回复:]
把你需要的控件都放到一个对话框中,设置对话框属性设置为子窗口,需要的时候ShowWindow(SW_SHOW),不需要的时候就ShowWindow(SW_HIDE).
[/Quote]
这样是不是会有很多的对话框呀?
也就是存在很多的对话框类与此相对应?
也就不大好管理啦?
caocheng8230
2009-12-18
打赏
举报
回复
[Quote=引用 11 楼 syq13 的回复:]
引用 1 楼 zyq5945 的回复:
把你需要的控件都放到一个对话框中,设置对话框属性设置为子窗口,需要的时候ShowWindow(SW_SHOW),不需要的时候就ShowWindow(SW_HIDE).
自己计算每个控件的位置,在初始化以及重绘窗口时都设置好每个控件的位置,这样是最简单直接的了
[/Quote]
这个方法最保险,但就是太烦琐了,特别当其中有很多不同控件的时候
开始还想用一个隐藏的列表控件来帮助排列窗口,但是该隐藏的列表控件没有HWND,也就无法实现了。
red-fly
2009-12-18
打赏
举报
回复
可以用另外一个CWnd窗口来做为你要显示和隐藏的控件的付窗口,比如可以是一个static,或者是另一个dialog,或者是一个图片框。
不过我没有试过,但总体思想就是这样,楼主一试便知,开始的时候可以只放一个控件上去来测试一下是否可行,可行了再把其它的控件放上去
ProgrammerNO1
2009-12-18
打赏
举报
回复
[Quote=引用 13 楼 cnzdgs 的回复:]
引用 6 楼 caocheng8230 的回复:
我是在子对话框里做的呀!
断点设置在了子对话框的DDX上时,DoDataExchange 函数都没有进去
最后那些控件都是HWnd=0
子对话框是怎么创建的?应该是构造一个子对话框类对象,然后调用Create函数创建。
[/Quote]
lz 这种方法可行么,怎样了
caocheng8230
2009-12-18
打赏
举报
回复
CDialogBar的DoDataExtrange还是失败,
syq13
2009-12-17
打赏
举报
回复
[Quote=引用 1 楼 zyq5945 的回复:]
把你需要的控件都放到一个对话框中,设置对话框属性设置为子窗口,需要的时候ShowWindow(SW_SHOW),不需要的时候就ShowWindow(SW_HIDE).
[/Quote]
自己计算每个控件的位置,在初始化以及重绘窗口时都设置好每个控件的位置,这样是最简单直接的了
a746027209
2009-12-17
打赏
举报
回复
从CWnd派生一个类,自己画一个窗口,把你需要的控件类对象加入新类中,然后在新类中把各个控件创建出来
加载更多回复(9)
MFC
UI
控件
布局
自动调整
含源代码 含demo 当
MFC
对话框尺寸自动变化时 自动调整所有
控件
的新位置 (每个
控件
的位置有接口设置) 其实原理类似QT 每个
布局
管理由垂直容器和水平容器装载
控件
具体详见实现文件 注释很详细
MFC
控件
自动
布局
完美实现
MFC
界面
布局
内附源码、demo 并有详细注释
MFC
快速入门
微软基础类库(英语:Microsoft Foundation Classes,简称
MFC
)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量,这是一套
mfc
快速入门的课程,主要对
MFC
各个
控件
的讲解如何使用,以及Windows
MFC
框架原理与工程应用开发。本课程重点讲解在windows平台开发使用
MFC
框架进行应用程序开发的技巧。
MFC
控件
自适应(亲测可用)
MFC
控件
自适应(亲测可用)
MFC
布局
管理,模仿Winform
布局
控件
仿C#的TableLayoutPanel封装的
MFC
布局
管理类,方便
MFC
界面
控件
布局
,刚学
MFC
时做的,不是很全,只可以作为参考
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章