vc入門寶典七(工具欄) (轉)
工具欄:namespace prefix = o ns = "urn:schemas--com::office" />
/develop/author/netauthor/he_zhidan/">何志丹
主要內容:
1, 概要。
2, 常用
3, 例項。
4, 動態建立工具條
5, 在工具欄中嵌
6, 用對話方塊加點陣圖按鈕作工具條
我們可以在資源編輯器的ToolBar上單擊右鍵,選擇Insert ToolBar,選中一個工具欄後,在右邊雙擊它的一項就可以編輯了。我們可以用圖形工具條及顏色盒畫它的外表,它的屬性有ID,長,寬及滑鼠指向它時的說明。
一般CToolBar定義在CMainFrame中,其實現在CMainFrame的OnCreate函式中完成。
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOL | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar ");
return -1; // fail to create
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
Bool Create(CWnd *pParentWnd,
D dwStu;e = WS_CHILD | WS_VISIBLE |CBRS_TOP,
UINT nID = AFX_IDW_TOOLBAR);
pParentWnd指定所屬視窗。
dwStyle 指定工具欄風格
CBRS_TOP 允許工具欄位於視窗頂端。
CBRS_BOTTOM 允許工具欄位於框架視窗底端
CBRS_NOALIGN 父視窗改變尺寸後工具欄位置不變
CBRS_TOOLTIPS 工具欄顯示提示條
CBRS_SIZE_DYNAMIC 工具幸是動態的
CBRS_SIZE_FIXED 工具欄是固定的
CBRS_FLOATING 工具欄是浮動的
CBRS_FLYBY 當滑鼠從命令按鈕上掠過時顯示提示資訊
CBRS_H_INPLACE 工具欄對不可見
SetButtonStyle()函式用來設定命令按鈕的風格或間隔區,或設為一組,按鈕的風格決定了按鈕的外貌和對使用者的反應方式.
Void SetButtonStyle(int nIndex,UINT nStyle);
nIndex 指定工具欄中按鈕或間隔的號.
nStyle TBBS_BUTTON 標準按鈕,此為預設值
TBBS_SEPARATOR 間隔區
TBBS_CHECKBOX 自動確認區
TBBS_GROUP 標記為一組按鈕的開始
TBBS_CHECKGROUP 標記為一組確認框的開始
ControlBar類的EnableDocking函式和CFrameWnd類的DockControlBar函式配合,設定工具欄的可活動性.
Void EanbleDocking(DWORD dwStyle)
CBRS_ALIGN_TOP 允許工具欄位於客戶區上側
CBRS_ALIGN_BOTTOM 允許工具欄位於客房區下側
CBRS_ALIGN_LEFT 允許工具欄位於客戶區左側
CBRS_ALIGN_RIGHT 允許工具欄位於客戶區右側
CBRS_ALIGN_ANY 允許工具欄位於客戶區的任意位置
CBRS_FLOAT_MULTI 允許多個控制欄在一個迷你框架視窗中浮動
Void DockControlBar(….)
pBar 要浮動的控制欄指標.
nDockBarID指定允許浮動的位置,或為0則不允許浮動,可以由下列值組合而成:
AFX_IDW_DOCKBAR_TOP 控制欄置於框架視窗上側;
AFX_IDW_DOCKBAR_BOTTOM 控制欄置於框架視窗下側
AFX_IDW_DOCKBAR_LEFT 控制欄置於框架視窗左側
AFX_IDW_DOCKBAR_RIGHT 控制欄置於框架視窗右側
改變工具欄的命令按鈕風格,工具欄的按鈕一般預設為命令按鈕,當放開標滑鼠,命令按鈕就”彈出來”,如果我們希望命令按鈕能留在被按上的狀態,就可以把命令按鈕的風格設為確認框。在ON_UPDATE_COMMAND_UI訊息處理函式中,使用SetCheck()成員函式和SetRadio()成員函式改變按鈕狀態。
SetCheck()的引數0表示刪除狀態,1表示確認狀態,2表示不確認狀態
SetRadio()的引數0表示刪除狀態,非0表示確認狀態。
我們用應用嚮導建立一個單文件程式,在工具欄中新增按鈕,ID設定為ID_TIME.在CMainFrame類新增一個布林資料型別m_bTime,初始值為false.
Ctrl+w新增ID_TIME的ON_COMMANDT和ON_UPDATE_COMMAND_U訊息響應函式。
void CMainFrame::OnShowTime()
{
m_bTime = ! m_bTime;
}
void CMainFrame::OnUpdateShowTime(CCmdUI * pCmdUI)
{
pCmdUI ->SetCheck(m_bTime);
}
注意如果有一個同ID的選單,它會自動根據按鈕的情況打上鉤鉤。
事實上我們可以不用toolbar資源建立一個工具條。程式碼如下:
UINT nID[]=
{ID_FILE_NEW,
ID_FILE_OPEN,
ID_TIME
};
m_wndToolBar.Create(this);
m_wndToolBar.Loaitmap(IDB_BITMAP1);
m_wndToolBar.SetButtons(nID,sizeof(nID)/sizeof(UINT));
其中點陣圖的大小要合適,否則會影響美觀,最後一行讓幾個ID與工具欄的按鈕和相關。
如果想設定每個按鈕的風格,可以將最後一行後面加:
m_wndToolBar.SetButtonStyle(1,TBBS_SEPARATOR);
也可m_wndToolBar.Create(this);
m_wndToolBar.LoadBitmap(IDB_BITMAP1);
m_wndToolBar.SetButtons(NULL,3);
m_wndToolBar.SetButtonInfo(0,ID_FILE_NEW,TBBS_BUTTON,0);
m_wndToolBar.SetButtonInfo(1,ID_FILE_OPEN,TBBS_BUTTON,2);
在工具欄中嵌入控制元件,如編輯框
1, 定義一個編輯控制元件,不能是區域性變數,否則會被釋放掉。
2, Create,唯一要注意的是位置要在工具條的地盤上。
CRect rect;
m_wndToolBar.GetItemRect(1,&rect);
edit.Create(WS_CHILD|WS_VISIBLE,rect,&m_wndToolBar,ID_EDIT);
用對話方塊加點陣圖按鈕作工具欄。
插入一個對話方塊,Styles的style設為child,border設為none.
在CMainFrame中m_wndToolBar的改成CDialogBar,並加一個CBitmapButton bb;
把建立工具條的那一句改為:
m_wndToolBar.Create(this,IDD_DIALOG1,WS_CHILD|WS_VISIBLE|CBRS_TOP,AFX_IDW_STATUS_BAR);
最後一上ID 同自己隨便確定。Ctrl+F5,一個極不美觀的工具條就出來了。
對按鈕進行整理,它們的處理函式仍然上Ctrl+w加。將按鈕Styles的Owner drawer和bitmap鉤上。在剛才的地方加一句。
bb.AutoLoad(IDC_BUTTON1,&m_wndToolBar);
注意你需要加三幅點陣圖(一幅也可以)。如你的按鈕的名字為X,剛三幅點陣圖的名字分別為”XUP”,”XDOWN”,”XFOCUS”,簡寫為”XU”,”XD”,”XF”.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956247/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vc入門寶典(十) (轉)
- vc入門寶典(九) (轉)
- VC入門寶典三(String) (轉)
- vc入門寶典八(基本操作) (轉)
- vc入門寶典(一)(選單) (轉)
- vc入門寶典六(多執行緒) (轉)執行緒
- Tungsten Fabric入門寶典丨TF元件的七種“武器”元件
- [轉]BI入門經典
- BI入門經典 (轉)
- Tungsten Fabric入門寶典丨編排器整合
- 【官方重磅釋出】Google AdMob新手入門寶典Go
- VC常見入門問題總結(二) (轉)
- VC常見入門問題總結(一) (轉)
- Tungsten Fabric入門寶典丨多編排器用法及配置
- Tungsten Fabric入門寶典丨首次啟動和執行指南
- Tungsten Fabric入門寶典丨關於安裝的那些事(下)
- Tungsten Fabric入門寶典丨關於叢集更新的那些事
- Tungsten Fabric入門寶典丨8個典型故障及排查Tips
- Tungsten Fabric入門寶典丨關於服務鏈、BGPaaS及其它
- Kotlin 語言入門寶典 | Android 開發者 FAQ Vol.5KotlinAndroid
- openlayers入門開發系列之地圖工具欄篇地圖
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- Webpack經典入門Web
- Tungsten Fabric入門寶典丨開始第二天的工作
- 大資料架構師從入門到精通 學習必看寶典大資料架構
- 資料治理之後設資料管理的利器——Atlas入門寶典
- VC中文FAQ寶庫之5:怎樣載入其他的應用程式 (轉)
- VC++環境下選單和工具欄的動態修改技術 (轉)C++
- windows網路程式設計經典入門 (轉)Windows程式設計
- VS2005入門之工具欄簡介
- 面試寶典面試
- Linux下Oracle安裝寶典 (轉)LinuxOracle
- Linux下Oracle安裝寶典(轉)LinuxOracle
- Tungsten Fabric入門寶典丨說說L3VPN及EVPN整合
- Tungsten Fabric入門寶典丨關於多叢集和多資料中心
- 一站式後設資料治理平臺——Datahub入門寶典
- VC++ MFC入門簡明教程,我當時就是看了它一天入門的 (轉)C++
- JFreeChart介紹及經典入門資料(轉)