重新制作 MFC 对话框以使用选项卡控件

Posted

技术标签:

【中文标题】重新制作 MFC 对话框以使用选项卡控件【英文标题】:Remaking MFC dialog for using tab control 【发布时间】:2015-06-22 12:39:43 【问题描述】:

我有一个 MFC 应用程序,但现在我需要使用选项卡控件添加新功能(因此我的主程序对话框变为“选项卡 1”)。但是我看到了一个问题 - 使用选项卡时,您必须创建新应用程序,然后将选项卡添加为对话框。所以这意味着我需要重写我在项目中使用的按钮和所有变量的所有事件处理程序。有没有办法迁移到 tabcontrol 应用程序而无需再做这么多工作?

【问题讨论】:

是否必须使用选项卡控件?您可以使用包含 CPropertyPage 的 CPropertySheet,因此每个 CPropertyPage 都将是您的对话框,您甚至可以使用页面上已有的对话框模板,处理程序也不需要更改,但您必须用 CPropertyPage 替换 CDialog 类 看起来很不错,但不是我想要的。这是一个有用的评论,但我仍然必须使用标签。 您可以使用相同的对话框,但将其创建为子对话框,然后将其放入CPropertyPage。或者将子对话框放在主对话框中,并使用选项卡控件显示/隐藏它。我认为这基本上就是 Robson 所说的,重点是您不必重新开始。 CPropertyPage 并不是我真正需要的东西,因为我需要为对话框上的所有选项卡提供一些通用元素和处理程序。 【参考方案1】:

我认为您不需要重写事件处理程序。我使用了CMFCTabCtrl 类,并且所有事件处理程序仍然继续在它们原来的形式中。

非常实用,与旧的 CTabCtrl 不同,切换选项卡时无需编写代码来隐藏/显示元素。当您执行 AddTab() 时,您只需要传递一个 CWnd* 类型变量,该变量可能是……您的表单。

【讨论】:

感谢您的回答,但我已经重建了我的应用程序。 :) 不客气。如果您使用旧的 CTabCtrl,值得将其迁移到 CMFCTabCtrl。

以上是关于重新制作 MFC 对话框以使用选项卡控件的主要内容,如果未能解决你的问题,请参考以下文章

Windows MFC:将子对话框调整为选项卡控件显示区域

Qt 选项卡小部件中的 MFC 控件

使 MFC CTabCtrl 不使用绘图选项卡的完整控件宽度

选项卡控件中的嵌入式对话框不能在第二个对话框中工作,MFC

MFC VS 2008 TabControl - 无法添加变量

如何从 MFC 选项卡控件 (TabCtrl) 获取额外数据?