【问题标题】:How to create your own control[Win32 - C++]如何创建自己的控件[Win32 - C++]
【发布时间】:2013-06-20 09:08:24
【问题描述】:
我使用 MFC 创建了控件派生类,例如从 CListCtrl 派生的 FolderLister 或彩色富编辑控件。所以我想将它们保存在一个文件中,因为这样项目会变得非常混乱。我可以创建自己的控件派生自一个控件然后在工具箱中使用它?或者我可以将我的课程保存在一个文件中,以便我可以将它存储在一个文件中?
我正在搜索 2 天仍然不知道我应该使用静态库还是创建一个 activex 控件该怎么办?或使用 atl。
对不起我的英语。
提前致谢。
【问题讨论】:
标签:
c++
mfc
activex
atl
ocx
【解决方案1】:
您可能想要创建 ActiveX 控件。您可以使用 MFC、ATL 或(如果您是自虐狂)自己来做到这一点。
在这三个中,通常使用 MFC 最容易,而您自己最难。 MFC 的问题是控件往往非常大。 ATL 让您生成的控件几乎 就像您完全手工编写它们一样小,并且只比使用 MFC 开发稍微困难一点。
【解决方案2】:
这是 Windows 中的一种与生俱来的能力。按钮控件就是一个很好的例子,只需调用 CreateWindowsEx() 并传递 L"Button" 作为类名,您就拥有了一个按钮控件。它们是内置于 Windows 中的控件。
使用此方案创建您自己的方案非常简单。只需使用导出的 Initialize() 函数创建一个 DLL 项目。在该函数中调用 RegisterClassEx() 来注册您自己的控件类。客户端代码现在可以简单地调用 CreateWindowEx() 并传递您的控件类名称来获取您对其窗口的控制。正是您在 WNDCLASSEX 中注册的窗口过程为窗口提供了自定义行为。添加您自己的消息以允许客户端配置您的控件并调用自定义功能。这正是普通控件的工作方式,初始化函数为InitCommonControls,自定义消息在CommCtrl.h头文件中声明。
您可以通过使 Windows 自动查找和加载您的 DLL 并使您的控件在设计器中工作的方案无限地复杂化该模式。 ActiveX 控件背后的想法。相当的学习曲线,最好保持简单。