日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CMFCTABCTRL 简介及BUG处理

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CMFCTABCTRL 简介及BUG处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?CMFCTabCtrl類主要用于分頁顯示,與CTabCtrl類似,自我認為功能比TabCtrl強大,但中間卻存在一些bug.

一、一般使用方法(vc2010同vs2008用法)

?????? 1.對話框放置PictureCtrl,設Type=Rectangle,Visible=False,Color=Gray,ID=IDC_STATIC_TAB

?????? 2.DDX_Control(pDX, IDC_STATIC_TAB, m_wndTabsArea);

?????? 3.CMFCTabCtrl m_wndTabs;

?????? 4.創建幾個對話框Border=None,Style=Child,創建Dlg類如:CApplyBus 定義對象:m_ApplyBus,對話框ID:IDD_APPLYBUS

二、創建

?? ? ? ? ?OnInitDialog()

????????? CRect rectTabs;
????????? m_wndTabsArea.GetWindowRect (rectTabs);
???????? ?ScreenToClient (rectTabs);
????????? m_wndTabs.Create (CMFCTabCtrl::STYLE_3D_ROUNDED_SCROLL, rectTabs, this, 1,CMFCTabCtrl::LOCATION_TOP); ? //創建CMFCTabCtrl ?m_wndTab對象

三、為m_wndTab添加選項卡

????????? m_ApplyBus.Create(IDD_APPLYBUS, &m_wndTab);? //創建對話框

?? ? ? ? ?m_wndTabs.AddTab (&m_ApplyBus, _T("測試對話框"), (UINT)-1, FALSE);//將對話框假如屬性頁中,設置標題為:測試對話框

四、得到選項卡的個數

?? ? ? ?m_wndTab.GetTabsNum();

五、設置為活動選項卡

?? ? ? ?m_wndTab.SetActiveTab(temptab); ?//設置第temptab為活動選項卡

?

六、BUG處理1------------------------------------------------------關閉按鈕無法實現(參考)

??????? 1、自己創建一個類繼承自:CMFCTabCtr l如:CMyMFCTabCtrl

??????? 2、重載afx_msg void OnLButtonDown(UINT nFlags, CPoint point)函數,函數定義如下:

????????????

????????? void CMyMFCTabCtrl::OnLButtonDown(UINT nFlags, CPoint point)
????????? {
????????????????????? ?CMFCTabCtrl::OnLButtonDown(nFlags, point);?

????????????????????? ?if (m_rectCloseButton.PtInRect(point))
????????????????????? ?{
????????????????????????????????????? ?int nTab = GetActiveTab();
????????????????????????????????????? ?if (nTab >= 0)
???????????????????????????????????? ?{
??????????????????????????????????????????????? CWnd* pWnd = GetTabWnd (nTab);
??????????????????????????????????????????????? ?pWnd->DestroyWindow ();
?????????????????????????????????????????????? ?//delete pWnd;
??????????????????????????????????????????????? ?RemoveTab(nTab);?
???????????????????????????????????? ?}
????????????????????????}
????????? }

????????? 3、創建時就可以直接用自己定義的類了:

????????? m_wndTabs.Create (CMyMFCTabCtrl::STYLE_3D_ROUNDED_SCROLL, rectTabs, this, 1,CMFCTabCtrl::LOCATION_TOP);

????????? 后續如上。。。。。。。。。。。。

三、BUG2--------------------------------------------------------------------------------------失焦刷新的問題

????????? 只需在所在類中的OnPaint()中刷新窗體即可:

???????? CWnd* m_wnd=m_wndTab.GetActiveWnd();//得到活動窗體的句柄
?????????m_wnd->RedrawWindow();//使窗體重畫

總結

以上是生活随笔為你收集整理的CMFCTABCTRL 简介及BUG处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。