C++ MFC : Separating common controls into a group

标签 c++ mfc

背景

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

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

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

问题

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

我能否创建一个父类(super class),这些对话框继承自它,在给定 (x, y) 的情况下动态创建控件,并连接所有连接并通过虚拟方法传达少数细节? 问题是我不知 Prop 体情况:

  1. 父类(super class)从哪里继承? (CWnd?CDialog?)

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

  3. 我应该在哪里初始化其子类中的父类(super class)? (OnInit?构造函数?)

  4. 我会只有两个消息映射吗?一个父类(super class)一个子类?

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

最佳答案

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

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

关于C++ MFC : Separating common controls into a group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186222/

相关文章:

c++ - 如何轻松解析来自 GSM 模块的 AT 命令响应?

c++ - 不调用带有 shared_from_this 的相互递归类的析构函数

c++ - 正则表达式匹配组提升 C++

c++ - const string 类成员的初始化列表

c++ - 通用转换运算符模板和 move 语义 : any universal solution?

c++ - #define _AFX_NO_DEBUG_CRT 导致编译错误流

c++ - CFile::Remove,从目录中删除了一个文件,但该文件不可用

c++ - 使用从 DLL 导出的 MFC90 类和用 MFC100 构建的 DLL

c++ - MFC C++ 后台线程

c++ - 在 C++ (MFC) 中连接资源文件中的字符串和常量