VC中的MFC控件control不见了怎么找回来?

 我来答
194443f1f
2011-04-25 · TA获得超过9496个赞
知道小有建树答主
回答量:1320
采纳率:50%
帮助的人:836万
展开全部
Tab Control是一个标签控件,只有标签,标签下面的窗体要你自己创建的子窗体、并通过回调、或者消息的方式来实现隐藏、显示,从而实现标签+显示选中的子窗体的效果。

MFC使用CTabCtrl进行封装,大致的流程是
1.创建TabCtrl
2.通过InsertItem方法添加页签
3.创建子窗体,指定这些窗体的父窗体为 上面创建的TabCtrl
4.在TabCtrl的父窗体类 或者 TabCtrl的继承类中 添加ON_NOTIFY响应消息, OnSize消息
5.实现消息响应函数

参考代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
... ...

int nCtrlID = 1, nTabIndex = 0;

if ( !m_wndTab.Create( TCS_FOCUSNEVER|WS_VISIBLE|TCS_RIGHTJUSTIFY, CRect( 0, 0, 0, 0 ), &m_wndView, nCtrlID++ ) )
{
TRACE0("Failed to create m_wndTab \n");
return -1;
}

CFont tabFont;
tabFont.CreateFont(12,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,
"宋体");
m_wndTab.SetFont(&tabFont,true);
tabFont.Detach();

m_wndTab.InsertItem( nTabIndex++, "错误" );
if ( !m_wndErrEvent.Create( WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_NOSORTHEADER, CRect( 0, 0, 0, 0 ), &m_wndTab, nCtrlID++ ) )
{
TRACE0("Failed to create m_wndErrEvent \n");
return -1;
}
m_wndErrEvent.SetExtendedStyle( LVS_EX_FULLROWSELECT );
m_wndErrEvent.InsertColumn( 0, "时间" );
m_wndErrEvent.InsertColumn( 1, "错误事件" );
m_wndErrEvent.ShowWindow( SW_SHOW );

m_wndTab.InsertItem( nTabIndex++, "调试" );
if ( !m_wndDebugEvent.Create( WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_NOSORTHEADER, CRect( 0, 0, 0, 0 ), &m_wndTab, nCtrlID++ ) )
{
TRACE0("Failed to create m_wndDebugEvent \n");
return -1;
}
m_wndDebugEvent.SetExtendedStyle( LVS_EX_FULLROWSELECT );
m_wndDebugEvent.InsertColumn( 0, "时间" );
m_wndDebugEvent.InsertColumn( 1, "调试事件" );
m_wndErrEvent.ShowWindow( SW_HIDE );
m_wndDebugEvent.ShowWindow( SW_SHOW );
m_wndTab.SetCurSel( m_wndTab.GetItemCount() - 1 );
}

ChildView.h:
//{{AFX_MSG(CChildView)
afx_msg void OnPaint();
afx_msg void OnSize(UINT nType, int cx, int cy);
//}}AFX_MSG
afx_msg void OnSelChangeTab(NMHDR *pNotify,LRESULT *pResult);
DECLARE_MESSAGE_MAP()

ChildView.cpp:
BEGIN_MESSAGE_MAP(CChildView,CWnd )
//{{AFX_MSG_MAP(CChildView)
ON_WM_PAINT()
ON_WM_SIZE()
//}}AFX_MSG_MAP
ON_NOTIFY(TCN_SELCHANGE,1,OnSelChangeTab)
END_MESSAGE_MAP()

void CChildView::OnSize(UINT nType, int cx, int cy)
{
CWnd ::OnSize(nType, cx, cy);
if (IsWindow(((CMainFrame*)theApp.m_pMainWnd)->m_wndTab.m_hWnd))
{
CRect viewRect;
this->GetClientRect(viewRect);
((CMainFrame*)theApp.m_pMainWnd)->m_wndTab.MoveWindow(viewRect);
CRect tabRect;
((CMainFrame*)theApp.m_pMainWnd)->m_wndTab.GetClientRect(tabRect);
((CMainFrame*)theApp.m_pMainWnd)->m_wndTab.AdjustRect(FALSE,tabRect);

if (IsWindow(((CMainFrame*)theApp.m_pMainWnd)->m_wndDebugEvent.m_hWnd))
{
((CMainFrame*)theApp.m_pMainWnd)->m_wndDebugEvent.MoveWindow(tabRect);

}
if (IsWindow(((CMainFrame*)theApp.m_pMainWnd)->m_wndErrEvent.m_hWnd))
{
((CMainFrame*)theApp.m_pMainWnd)->m_wndErrEvent.MoveWindow(tabRect);
}
for ( int i = 0; i < 2; i++ )
{
((CMainFrame*)theApp.m_pMainWnd)->m_wndDebugEvent.SetColumnWidth( i, LVSCW_AUTOSIZE_USEHEADER );
((CMainFrame*)theApp.m_pMainWnd)->m_wndErrEvent.SetColumnWidth( i, LVSCW_AUTOSIZE_USEHEADER );
}
}
}

void CChildView::OnSelChangeTab(NMHDR *pNotify,LRESULT *pResult)
{
int cursel=((CMainFrame*)theApp.m_pMainWnd)->m_wndTab.GetCurSel();
if ( cursel == ((CMainFrame*)theApp.m_pMainWnd)->m_wndTab.GetItemCount() - 1 )
{
((CMainFrame*)theApp.m_pMainWnd)->m_wndDebugEvent.ShowWindow(SW_SHOW);
((CMainFrame*)theApp.m_pMainWnd)->m_wndErrEvent.ShowWindow(SW_HIDE);
}
else if ( cursel == 0 )
{
((CMainFrame*)theApp.m_pMainWnd)->m_wndDebugEvent.ShowWindow(SW_HIDE);
((CMainFrame*)theApp.m_pMainWnd)->m_wndErrEvent.ShowWindow(SW_SHOW);
}
}
penglcool2008
推荐于2018-04-12 · TA获得超过204个赞
知道答主
回答量:64
采纳率:0%
帮助的人:45.6万
展开全部
点击项目工作区中的Resource view,然后选择Dialog中的任意一项进行选中,再在工具栏中的空白处点击右键选中control
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
153716555
2011-04-25
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部

请说的详细点呗 !是不是 空间页面啊

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shuipingtoy
2011-05-04 · TA获得超过1679个赞
知道答主
回答量:157
采纳率:0%
帮助的人:120万
展开全部
Tools -> Toolbars -> Controls前面的方框勾上,就会出现了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
907322204
2011-04-24 · 超过10用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:48.2万
展开全部
View菜单 Toolbox
反正就是Toolbox工具栏 自己找吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式