【问题标题】:C++ MFC : Separating common controls into a groupC ++ MFC:将常用控件分成一组
【发布时间】:2014-08-07 15:19:11
【问题描述】:

背景

我对 MFC 和 C++ 缺乏经验。

我有一组对话框,它们都有一小部分,包含相同的控件集和极其相似的代码。

我想从所有对话框中分离出一小部分控件,将代码从所有对话框类中移到一个类中。

问题

我不知道该怎么做。我所有的想法似乎都有自己的问题,因为我太缺乏经验了。

我可以创建一个超类,这些对话框继承自它动态地创建控件,给定一个 (x, y) 并连接所有连接并通过虚拟方法传达少数细节? 问题是我不知道具体情况:

  1. 超类从哪里继承? (CWnd?CDialog?)

  2. 我应该在哪里创建超类中的控件? (OnInit?构造函数?)

  3. 在哪里初始化超类的子类? (OnInit?构造函数?)

  4. 我只有两个消息映射吗?一个给超类,一个给子类?

还有什么我应该注意的陷阱吗?

【问题讨论】:

  • 您在每个对话框中的常用控件是否具有不同的功能,具体取决于它们出现的对话框还是都执行相同的操作?
  • 他们每个人都做同样的事情。唯一的区别是它们影响的变量。例如,维度会为每个不同的对话框读取不同的变量。

标签: c++ mfc


【解决方案1】:

您要重用的小部分可以是一个普通的无模式对话框,从 CDialog 派生。您可以使用资源编辑器创建其控件 - 就像任何其他对话框一样 - 因此它们不必动态创建。诀窍是关闭对话框的标题栏样式(在资源编辑器中),因此这部分是一个单独的对话框在视觉上不会很明显。它将与父对话框完全融合。

对于您想要重用此对话框的每个位置,只需创建它并使用 SetWindowPos 将其放置在具有 (x, y) 坐标的父对话框上。

【讨论】:

  • 不要将 WS_CHILD 样式添加到资源中。
猜你喜欢
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多