如何優雅的寫UI (3)新增MFC選項卡

2022-05-15 04:53:38 字數 2643 閱讀 5326

窗體建立完成,接下來我們講講控制項的使用

首先在cformview窗體下選項卡的成員變數,這裡我選擇mfc下的選項卡類庫:cmfctabctrl 

class ctabview : public

cformview

在初始化中動態建立選項卡並設定選項卡的樣式,這裡我們使用了creat函式,他的原型是

bool create(style style, const rect& rect, cwnd* pparentwnd, uint nid, location location = location_bottom, bool bclosebtn = false);
第乙個引數 style style

是乙個列舉型別,它定義了選項卡的樣式,基本都為3d的樣式

public:

cmfctabctrl();

enumstyle

;第二個引數:設定選項卡大小

第三個引數:窗體控制代碼

第四個引數:設定選項卡控制項id

第五個引數:設定選項卡標籤位置,mfc只給了上下兩個方向來顯示選項卡標籤的位置

public:

cmfcbasetabctrl();

enum location

;第六個引數:是否帶關閉按鈕,關閉按鈕的邏輯是要自己實現的,這個我們下面再說。

新增選項卡**:

voidctabview::oninitialupdate()

}

建立好的選顯示卡是光禿禿的沒有任何標籤頁的,這個需要我們手動新增

如何給選項卡建立標籤頁 ,這需要我們新建窗體在選項卡中顯示

建立三個dialog窗體備用

給窗體新增類,自動生成就可以

之後咱們給選項卡新增標籤頁,在選項卡中引用我們剛剛新建的dialog類的指標

#include "

dialog1.h

"#include

"dialog2.h

"#include

"dialog3.h

"class ctabview : public

cformview

在程式初始化時動態建立的窗體

void ctabview::oninitialupdate()

m_dlg1=new cdialog1;

m_dlg2=new cdialog2;

m_dlg3=new cdialog3;

m_dlg1->create(idd_dialog1,&m_tab);

m_dlg1->setfont(&afxglobaldata.fontregular);

//m_dlg1->setwindowtextw(l"listctrl控制項");

m_dlg2->create(idd_dialog2,&m_tab);

m_dlg2->setfont(&afxglobaldata.fontbold);

//m_dlg2->setwindowtextw(l"還沒想好些什麼控制項");

m_dlg3->create(idd_dialog3,&m_tab);

m_dlg3->setfont(&afxglobaldata.fontdefaultguibold);

/*m_dlg3->setwindowtextw(l"還有什麼控制項比較難寫嗎");*/

m_tab.addtab(m_dlg1,l"listctrl控制項");

m_tab.addtab(m_dlg2,l"還沒想好些什麼控制項");

m_tab.addtab(m_dlg3,l"還有什麼控制項比較難寫嗎");

m_tab.enableactivetabclosebutton();//是否新增關閉選項卡按鈕

m_tab.setactivetab(0); //啟用選項卡,以當前選項卡為第一頁。

執行一下看一下效果

看起來還可以,但是當我們點選標籤頁的時候會發現,我們的窗體是彈出式的並不是嵌入式,這是因為我門少了少了一步,導致窗體在建立的時候是以彈出的方式開啟。

開啟窗體屬性,將style屬性由彈出popup改為child子視窗,所有的標籤用的窗體都要這麼改

效果裡面的窗體太難看了了,把邊框和標題去掉就好了

窗體屬性,把border改為none就好了

最終效果

** 新增mfc選項卡.zip

如何優雅的寫多層if判斷

前言 在日常專案中,我們經常會使用到if來進行判斷,可是多層的時候,你就會發現 很累贅 需求現在有4個產品,分別是手機 電腦 電視機 遊戲機,當然每個產品顯示的 不一樣 if判斷 看到這樣的需求,第一時間寫個if判斷,簡單快速,我們來看看 let commodity if commodity.pho...

如何優雅的寫部落格 Typora picGo

怎麼優雅的寫部落格 typora picgo想想第一次寫筆記或者部落格是什麼時候,我已經記不清了,都隨著時間散落在磁碟的各個角落。後面可以寫一次你後用過哪些筆記軟體的專題 手動狗頭 先來幾張截圖看看 看看我多久沒用了 中心建議大家不要輕易切換筆記平台 血的教訓啊 印象筆記 onenote 也是我從頭...

如何新增cocostudio生成的UI到專案

cocos2dx版本 cocos2d x 3.2alpha0 cocostudio版本 v1.4.0.1 1.將cocostudio生成的ui檔案拷貝到專案resources資料夾 2.新增標頭檔案,新增命名空間 include cocos ext.h include editor support ...