C ++ MFC:将常用控件分成一组
Posted
技术标签:
【中文标题】C ++ MFC:将常用控件分成一组【英文标题】:C++ MFC : Separating common controls into a group 【发布时间】:2014-08-07 15:19:11 【问题描述】:背景
我对 MFC 和 C++ 缺乏经验。
我有一组对话框,它们都有一小部分,包含相同的控件集和极其相似的代码。
我想从所有对话框中分离出一小部分控件,将代码从所有对话框类中移到一个类中。
问题
我不知道该怎么做。我所有的想法似乎都有自己的问题,因为我太缺乏经验了。
我可以创建一个超类,这些对话框继承自它动态地创建控件,给定一个 (x, y) 并连接所有连接并通过虚拟方法传达少数细节? 问题是我不知道具体情况:
超类从哪里继承? (CWnd?CDialog?)
我应该在哪里创建超类中的控件? (OnInit?构造函数?)
在哪里初始化超类的子类? (OnInit?构造函数?)
我只有两个消息映射吗?一个给超类,一个给子类?
还有什么我应该注意的陷阱吗?
【问题讨论】:
您在每个对话框中的常用控件是否具有不同的功能,具体取决于它们出现的对话框还是都执行相同的操作? 他们每个人都做同样的事情。唯一的区别是它们影响的变量。例如,维度会为每个不同的对话框读取不同的变量。 【参考方案1】:您要重用的小部分可以是一个普通的无模式对话框,从 CDialog 派生。您可以使用资源编辑器创建其控件 - 就像任何其他对话框一样 - 因此它们不必动态创建。诀窍是关闭对话框的标题栏样式(在资源编辑器中),因此这部分是一个单独的对话框在视觉上不会很明显。它将与父对话框完全融合。
对于您想要重用此对话框的每个位置,只需创建它并使用 SetWindowPos 将其放置在具有 (x, y) 坐标的父对话框上。
【讨论】:
不要将 WS_CHILD 样式添加到资源中。以上是关于C ++ MFC:将常用控件分成一组的主要内容,如果未能解决你的问题,请参考以下文章
VS2010-MFC(常用控件:图片控件Picture Control)
转VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)