我需要使用 UI 扩展现有的 MFC 应用程序,除非我使用选项卡控件,否则最终会变得非常困惑。但是,UI 的本质是有些控件是全局的,只有一些控件可以本地化到特定选项卡。
选项卡控件的标准使用 ( CPropertySheet + CPropertyPage
) 或多或少期望只有 CPropertyPage
在 CPropertySheet
上可见的实例(选项卡)对象,仅此而已。有一个 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/