Visual studio 2008 CMFCTabCtrl在CDialog中不可见

Visual studio 2008 CMFCTabCtrl在CDialog中不可见,visual-studio-2008,visual-c++,mfc,Visual Studio 2008,Visual C++,Mfc,我在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),

我在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);

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

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

m_TabControl.ShowWindow(TRUE);
ShowWindow()
函数应该不是必需的,而且它的值应该是
SW\u SHOW
,而不是
TRUE
,因此:

m_TabControl.ShowWindow(SW_SHOW);
但我建议您完全删除这一行,这是没有必要的

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

编辑

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


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

m_TabControl.ShowWindow(TRUE);
ShowWindow()
函数应该不是必需的,而且它的值应该是
SW\u SHOW
,而不是
TRUE
,因此:

m_TabControl.ShowWindow(SW_SHOW);
但我建议您完全删除这一行,这是没有必要的

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

编辑

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


正确的直视选项卡;GetDlgItem(IDC_HOLDER)->GetWindowRect(&rectTab);ScreenToClient(&rectTab);我仍然有问题…纠正错误;GetDlgItem(IDC_HOLDER)->GetWindowRect(&rectTab);ScreenToClient(&rectTab);但我还是有问题…你做错的第一件事是你的代码绝对没有错误检查。当它不能像你期望的那样工作时,这就变得很重要了。它会准确地告诉你它失败的地方,以及一个错误代码,指出问题的根源。你做错的第一件事是你的代码完全没有错误检查。当它不能像你期望的那样工作时,这就变得很重要了。它准确地告诉您它失败的地方,以及一个指示问题根源的错误代码。