在 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 自定义控件的设计时支持不是其中之一。 2
My comment 上面解释了,您可以获得多少设计时支持自定义控件。完全不支持控件自定义。这与 ActiveX 控件不同。以上是关于在 MSVC 中有 MFC 自定义控件(设计时)之类的东西,有没有 win32 自定义控件之类的东西?的主要内容,如果未能解决你的问题,请参考以下文章