如何将控制类划分为实现与公共接口?

时间:2010-12-14 20:50:11

标签: c++ mfc controls

我已经创建了一个MFC控件类,它是从CWnd派生的。

控件是从头开始编写的,不使用任何子控件。这个单一类实现了所有控制逻辑,包括状态维护,绘制,响应事件等。

此外,我需要一个更“公共”的接口供使用该控件的代码使用。理想情况下,这似乎是一个更简单的类,具有更简单的接口。但是,有两个与同一个窗口关联的MFC类似乎会导致各种问题,或者甚至不可能。

我不确定最好的方法来解决这个问题。我对如何最好地为这样的控件提供简单的接口类感兴趣。

请注意,控件未预编译到库或任何内容中。它将作为应用程序的一部分进行编译。

2 个答案:

答案 0 :(得分:1)

您可以尝试将该类拆分为两个,更复杂的实现类是公共类的子类。

通常我建议创建一个单独的纯虚拟接口类并使用多重继承将它连接到MFC,但我猜你希望能够在接口上使用标准的CWnd方法。

答案 1 :(得分:1)

MFC接口很简单,因为它们实际上并没有实现类,它们只是包装公共API(C& WM),以便在C ++中使编码更容易。

例如,您可以sendMessage hwnd WM_SetText到编辑字段,或使用CEdit(hwnd).setText()执行此操作。

2我认为是课程, 您可以将接口类作为实现的父级,也可以使用PIMPL模型将接口加入实现。