CMFCTabCtrl 在 CDialog 中不可见

Posted

技术标签:

【中文标题】CMFCTabCtrl 在 CDialog 中不可见【英文标题】:CMFCTabCtrl not visible in CDialog 【发布时间】:2013-05-09 06:24:53 【问题描述】:

我在 CDialog 中添加了 CMFCTabCtrl。但我的问题是它不可见。这是我用来创建 CMFCTabCtrl 的代码。

m_TabControl.Create (CMFCTabCtrl::STYLE_3D, rectTab, this, 1, CMFCTabCtrl::LOCATION_TOP , TRUE);
m_TabControl.ShowWindow(TRUE);

m_wnd1.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 100, 100), &m_TabControl, 1);
m_wnd1.SetFont (&afxGlobalData.fontRegular);
m_wnd1.SetWindowText ("Edit 1");

m_wnd2.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 0, 0), &m_TabControl, 2);
m_wnd2.SetFont (&afxGlobalData.fontRegular);
m_wnd2.SetWindowText ("Edit 2");

m_wnd3.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 0, 0), &m_TabControl, 3);
m_wnd3.SetFont (&afxGlobalData.fontRegular);
m_wnd3.SetWindowText ("Edit 3");

m_wnd4.Create (WS_CHILD | WS_VISIBLE, CRect (0, 0, 0, 0), &m_TabControl, 4);
m_wnd4.SetFont (&afxGlobalData.fontRegular);
m_wnd4.SetWindowText ("Edit 4");


m_TabControl.AddTab (&m_wnd1, "One", 0, TRUE);
m_TabControl.AddTab (&m_wnd2, "Two", 0, FALSE);
m_TabControl.AddTab (&m_wnd3, "Three", 0, FALSE);
m_TabControl.AddTab (&m_wnd4, "Four", 0, FALSE);

我在这里做错了什么?/...

【问题讨论】:

您做错的第一件事是您的代码绝对没有错误检查。当它不像你期望的那样工作时,这变得很重要。它会准确地告诉您失败的地方,以及指出问题根源的错误代码。 【参考方案1】:

除了以下行,我看不出代码有问题:

m_TabControl.ShowWindow(TRUE);

ShowWindow() 函数应该不是必需的,无论如何它应该取值SW_SHOW,而不是TRUE,所以:

m_TabControl.ShowWindow(SW_SHOW);

但我建议你完全删除这一行,没有必要。

如果您在更正此问题后仍有问题,请在 Create() 调用中发布您用于定义 RECT 的代码。

编辑

好的,要检查一件事。我假设您有一个组框或其他东西来定义RECT。如果是这样,请确保在对话框编辑器中将该组框设置为Visible: false,否则它将显示在选项卡控件的顶部。我刚刚通过复制/粘贴您的代码并使用四个CEdit 控件作为m_wnd1 .. m_wnd4 使其正常工作(我不知道您将它们声明为什么)。

【讨论】:

CRect rectTab; GetDlgItem(IDC_HOLDER)->GetWindowRect(&rectTab); ScreenToClient(&rectTab);我还是有问题...

以上是关于CMFCTabCtrl 在 CDialog 中不可见的主要内容,如果未能解决你的问题,请参考以下文章

如何在每个 CMFCTabCtrl 选项卡标题中放置复选框

怎么在CMFCTabCtrl 每个tab页面中添加其他控件

如何关闭 CMFCTabCtrl 中的选项卡

如何更改 CMFCtabCtrl 的 TabbedDocumentsMenu 上的工具提示“活动文件”?

MFC用CMFCTabCtrl类动态创建标签页,怎样添加消息响应

c++类后面带一个:什么意思 class CAboutDlg : public CDialog//什么意思? public: CAboutDlg(); 求解释