C++ C++;MFC:将常用控件划分为一个组

C++ C++;MFC:将常用控件划分为一个组,c++,mfc,C++,Mfc,背景 我对MFC和C++的经验很差。 我有一组对话框,它们都有一个小部分,具有相同的控件集和极其相似的代码 我想将控件的一小部分从所有对话框中分离出来,将代码从所有对话框类移动到单个类中 问题 我不知道该怎么办。我所有的想法似乎都有自己的问题,因为我太没经验了 我是否可以创建一个超级类来继承这些对话框,该类在给定(x,y)的情况下动态创建控件,并连接所有连接,并通过虚拟方法传递少数细节? 问题是我不知道具体细节: 超级类将从何处继承?(CWnd?CDialog?) 我将在超级类中的何处创建控件?

背景

我对MFC和C++的经验很差。

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

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

问题

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

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

  • 超级类将从何处继承?(CWnd?CDialog?)

  • 我将在超级类中的何处创建控件?(OnInit?建造商?)

  • 我在哪里初始化子类中的超类?(OnInit?建造商?)

  • 我要两张信息地图吗?一个是超级班,一个是次级班


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

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


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

    每个对话框中的常用控件是否具有不同的功能,取决于它们出现的对话框或它们都执行相同的操作?它们各自执行相同的操作。唯一的区别是它们影响的变量。例如,一个维度会为每个不同的对话框读取不同的变量。不要将WS_子样式添加到资源中。