CMFCTabCtrl控件相比于CTabTrcl的使用更加方便灵活,但是在对话框控件中只有CTabTrcl控件,因此如果开发人员想使用CMFCCtrl控件的话需要做一些小小的修改。
开发环境:Win10+Visual Studio 2010
1、重载对话框的OnCreate(LPCREATESTRUCT lpCreateStruct)函数,并在其中创建CMFCTabCtrl和tab上的显示界面。m_tabCtrl是CMFCTabCtrl的变量,m_recvDlg,m_collectorDlg,m_timesetDlg是需要显示在tab页面的对话框,这类对话框需要设置成child类型。
m_tabCtrl.Create(CMFCTabCtrl::STYLE_3D, CRect(0,0,0,0), this, 1,CMFCTabCtrl::LOCATION_TOP);
m_recvDlg.Create(CRecvDlg::IDD,&m_tabCtrl);
m_tabCtrl.AddTab(&m_recvDlg,_T("Recv"));
m_collectorDlg.Create(IDD_DIALOG_COLLECTOR,&m_tabCtrl);
m_tabCtrl.AddTab(&m_collectorDlg,_T("Controller"));
m_timesetDlg.Create(IDD_DIALOG_TIMESET,&m_tabCtrl);
m_tabCtrl.AddTab(&m_timesetDlg,_T("TimeSet"));
m_tabCtrl.EnableTabDocumentsMenu();
2、然后需要在对话框的OnInitDialog()函数中设置tab控件的大小。m_staticTab是用来设置tab控件大小的控件,Picture Control控件,类型设置为Rectangle
// TODO: Add extra initialization here
CRect rectTab;
m_staticTab.GetWindowRect (&rectTab);
ScreenToClient (&rectTab);
m_tabCtrl.MoveWindow(&rectTab);
3、在OnPaint函数中添加控件刷新,否则在程序运行后,一开始无法显示tab页面上的控件。
CWnd* m_wnd=m_tabCtrl.GetActiveWnd();//获取控件窗体
m_wnd->RedrawWindow();//窗体重绘-
注意事项:
在OnCreate函数中创建tab控件和tab控件的页面,在OnInitDialog函数中设置tab控件的大小。网络上有在OnInitDialog函数中创建Tab控件和页面的,在测试之后发现tab页面还是存在显示问题,可能CMFCTabCtrl有一些bug,读者可以在网络上自行查找相关的解决方法。
本文介绍了如何在基于Win10+Visual Studio 2010的环境中,将CMFCTabCtrl控件应用于对话框。通过重载OnCreate()函数创建并添加对话框子页面,同时在OnInitDialog()中调整控件大小,并在OnPaint()中实现控件刷新。注意在OnCreate中创建和初始化,避免潜在的显示问题。

6383

被折叠的 条评论
为什么被折叠?



