【发布时间】:2015-03-11 17:59:24
【问题描述】:
我正在尝试将 CTabCtrl 添加到我的 MFC 应用程序中。我正在尝试直接关注 MSDN。
*MSDN: Adding Tabs to Tab Control
这是我尝试过的:
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 中使用选项卡?
【问题讨论】:
-
您是否单击了重试以单步执行代码?
-
在该对话框上单击重试将引导您获得更多有用的调试信息。
-
您的代码在哪里调用了 InsertItem?不能在DoDataExchange中,需要在对话框初始化并创建控制窗口后调用的函数中。
-
我用调试信息更新了我的问题。我在主 Dialog 类的
OnInitDialog() {之后调用了 InsertItem。 -
很可能,在执行 InsertItem 命令时,您的句柄 (m_hwnd) 无效。这意味着在您尝试执行插入命令之前未正确创建您的选项卡控件。