c++ - 使用对话框模板创建属性表

标签 c++ mfc

我需要使用 UI 扩展现有的 MFC 应用程序,除非我使用选项卡控件,否则最终会变得非常困惑。但是,UI 的本质是有些控件是全局的,只有一些控件可以本地化到特定选项卡。

选项卡控件的标准使用 ( CPropertySheet + CPropertyPage ) 或多或少期望只有 CPropertyPageCPropertySheet 上可见的实例(选项卡)对象,仅此而已。有一个 Microsoft Example Project这显示了在选项卡控件占用的区域之外绘制的一个附加窗口......但它不是立即清楚它是如何创建/绘制/处理的,它只是一个单独的附加窗口,生成很少的事件(我猜它被绘制了,所以一定有一个 WM_PAINT 事件处理程序潜伏在某处)。

是否可以使用 MS 对话框编辑器布置一组控件,包括选项卡控件,并创建 CPropertySheet使用该模板,以一种很好的方式连接事件处理程序,等等......或者在遇到这种情况时,让 MFC 框架尽可能多地进行创建、绘图和事件处理的等效方法?

最佳答案

是的,可以创建对话框模板并在 CPropertyPage 中使用它们。

每个 CPropertyPage 的行为几乎像一个对话框,并处理其上控件的所有事件。

还有像 OnApply 这样的功能可以帮助您管理控件和内部存储之间的数据交换。

中央 CPropertySheet 只创建激活的对话框。因此当页面激活时第一次调用页面的 OnInintDialog。

自 2010 年以来,在 MFC 中有比 CPropertySheet 更多的可能性。您可以创建选项卡式 View ,同样可以是 CFormViews。我不喜欢基于 CDialog 的应用程序,所以如果适合应用程序,我更喜欢在带有工具栏和菜单的标准框架中的选项卡式 View 。因此,另一种整理 UI 的方法是选择带有选项卡式文档的 MDI 界面……但多个文档可能不是您想要的。

Here is a sample具有多个选项卡式 View 的 SDI 应用程序。 Coeproject 还展示了更多示例 here并带有分离器和标签 here .

关于c++ - 使用对话框模板创建属性表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043791/

相关文章:

c++ - 在 Alpine Linux 上错误地声明了 strerror_r

C++ 模板 : C2143 error in VS2017 but compiles in VS2013

c++ - Windows api获取客户端dc位图大小

c++ - MFC CEdit 失去焦点处理程序

c++ - 包装的 unique_ptr 的模板化 move 构造函数

c++ - Boost::asio 套接字 - 如何干净地断开它们?

C++内存访问冲突

c++ - 在 MFC C++ 中隐藏窗口

c++ - 在 Windows 7 上使用 IFileDialog 的问题

c++ - 在这种情况下如何使用双缓冲区?