在 MSVC 中有 MFC 自定义控件(设计时)之类的东西,有没有 win32 自定义控件之类的东西?

Posted

技术标签:

【中文标题】在 MSVC 中有 MFC 自定义控件(设计时)之类的东西,有没有 win32 自定义控件之类的东西?【英文标题】:In MSVC there are such things as MFC custom controls (design time), is there a such thing as a win32 custom control? 【发布时间】:2015-03-16 20:59:15 【问题描述】:

在 microsoft visual c++ (visual studio) 中,可以创建设计时控件,您可以使用 MFC 将其拖放到对话框中。

例如http://www.codeproject.com/Articles/521/Creating-Custom-Controls

我的问题是:是否可以在不使用 MFC 的情况下开发可以在设计时拖放到对话框中的 win32 自定义控件?或者对于 win32 编程,您是否会被 win32 提供给您的控件(即编辑、列表框、复选框等)所困。

Visual Studio C++ IDE 是否只允许您在设计时创建 mfc 自定义控件,而使用 win32 您必须在运行时创建自定义控件?

【问题讨论】:

您也可以在 Win32 中的对话框中添加“自定义控件”,但对话框编辑器对此一无所知。您只需获得一个通用模板,您可以在其中指定基本参数(窗口类、样式等)。只要注册了类,就会在对话框注册时创建控件。 @David:DLGITEMTEMPLATEEX structure 可以指定任意窗口类名,并提供任意初始化数据。它们是使用DIALOGEX resource 中的通用CONTROL 关键字指定的。正如 Jonathan 指出的那样,这将在设计时显示为通用模板。 ActiveX 控件是一个例外,它可以实现供资源编辑器使用的设计时表示。 【参考方案1】:

确实,您在从工具箱中选择控件的选项方面受到更多限制,这对于 MFC 来说很容易。但是,您可以为 Win32 项目创建或使用自定义控件,但是,这些控件将是不支持 MFC 的精美且具有专业外观的项目。 这些自定义控件可以是静态库、DLL 或只是 c++ 类。 Here 就是一个例子。

【讨论】:

OP 专门询问自定义控件的设计时间方面。这仅适用于 ActiveX 控件。您不能将 ActiveX 控件作为静态库发布,或者在发布源代码时获得设计时支持。该链接没有帮助。它同样没有解决这个问题。 自定义控件不必基于 ActiveX。还有其他方法,就像我给出的例子一样。 正确。自定义控件不必是 ActiveX 控件。然而,只有 ActiveX 控件在 Visual Studio 的图形资源编辑器中提供设计时支持。这就是OP所要问的。这个答案没有解决这个问题。 1. VS 扩展呢? 2. OP 在询问 MFC Vs。 Win32 和我认为,您可以在设计时使用自定义控件而不使用 MFC。 1 Visual Studio 可扩展性允许您提供很多的功能。对直接 Windows API 自定义控件的设计时支持不是其中之一。 2My comment 上面解释了,您可以获得多少设计时支持自定义控件。完全不支持控件自定义。这与 ActiveX 控件不同。

以上是关于在 MSVC 中有 MFC 自定义控件(设计时)之类的东西,有没有 win32 自定义控件之类的东西?的主要内容,如果未能解决你的问题,请参考以下文章

MFC如何添加自定义控件

MFC控件编程之 按钮编辑框.静态文本的使用

自定义 MFC 控件包含另一个控件 - 消息未通过

qt自定义控件样式在提升使用中不生效之坑

在MFC里面添加个自定义控件,为啥程序自动退出,不显示窗口等待用户操作了?

如何在 MFC 工具栏中添加自定义控件