我有一个CMyTabView
派生自CBCGPTabView
( CTabView
) ,我想动态添加选项卡。添加的选项卡将CMyListView
派生自CListView
. 如果我在它的过程中添加标签CMyTabView::OnCreate()
工作正常。如果我尝试通过自定义消息执行此操作,它会添加选项卡,但它是空白的(CMyListView::OnInitialUpdate()
从不调用)。
我需要做什么才能让它工作?
这是有效的(测试选项卡):
int CMyTabView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (__super::OnCreate(lpCreateStruct) == -1)
return -1;
CBCGPTabWnd &tabctrl=GetTabControl();
int index=AddView(RUNTIME_CLASS(CMyForm), _T("My Form"));
if (index!=-1) {
m_IDTabMyForm=tabctrl.GetTabID(index);
}
AddView(RUNTIME_CLASS(CMyListView), _T("Test"));
tabctrl.HideNoTabs();
return 0;
}
这不会(除了添加带有空白窗口的选项卡)。
afx_msg LRESULT CMyTabView::OnUwmAddMyListViewTab(WPARAM wparam, LPARAM lparam)
{
CString mytabname;
mytabname=_T("My ListView");
// check if tab already exists - if so select it
CBCGPTabWnd &tabcontrol=GetTabControl();
for (int i=0; i<tabcontrol.GetTabsNum(); i++) {
CString tablabel;
if (tabcontrol.GetTabLabel(i, tablabel)) {
if (tablabel==mytabname) {
tabcontrol.SetActiveTab(i);
return 0;
}
}
}
// new tab so add it
int index=AddView(RUNTIME_CLASS(CMyListView), mytabname);
if (index!=-1) {
tabcontrol.SetActiveTab(index);
}
return 0;
}