0

我正在尝试将 CTabCtrl 添加到我的 MFC 应用程序中。我正在尝试直接关注 MSDN。

MSDN 添加选项卡

* MSDN:将选项卡添加到选项卡控件

这是我尝试过的:

DDX_Control(pDX, TAB1, m_TabCtrl);

TC_ITEM ti;
ti.mask = TCIF_TEXT;
ti.pszText = _T("First Tab");

m_TabCtrl.InsertItem(0,&ti);

我收到以下错误消息: 断言失败

如果我点击忽略,我的 CTabCtrl 会显示,但没有任何选项卡(只是一个灰色方块)。如果我点击重试,我会在以下位置获得断点:

_AFXCMN_INLINE BOOL CTabCtrl::SetItem(int nItem, TCITEM* pTabCtrlItem)
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)pTabCtrlItem); }

我尝试添加标题#include "afxcmn.h",但它没有改变任何东西。

作为第一步,我只是试图让命名选项卡显示在我的应用程序上。最终我希望标签显示无模式对话框。有人可以告诉我我做错了什么吗?有没有更好的方法在 MFC 中使用选项卡?

4

1 回答 1

2

根据您提供的信息,很明显它是在 IsWindow(m_hWnd) 上进行断言。这意味着当您调用 InsertItem() 时,您的选项卡控件的窗口尚未创建。

您是将 CTabCtrl 放在 CDialog 派生类还是其他 CWnd 派生类中?您是否在 DDX_Control() 代码行上设置了断点,以确保 1)它实际上被调用,以及 2)它是成功的?我有一种感觉,它甚至没有被调用,因为如果它是,那么你将有一个有效的 m_hWnd,或者你会在你的 DDX_Control() 调用时得到一个 ASSERT() 来说明它失败了。

于 2015-03-11T21:16:49.813 回答