工具欄程式設計

2021-04-06 23:41:23 字數 2421 閱讀 2030

1

、用api

建立工具欄,簡單例子

之前定義了乙個由3個16*16組成的點陣圖,準備建立乙個具有三個按鈕的工具欄

tbbutton tbbuttons=, ,

};

create*******ex(hwnd,ws_child|ws_visible|tbstyle_flat,.....,16,16,16,16,sizeof(tbbutton));

這樣即可:

其中:tbbutton結構中的第一元素為:按鈕索引,接下來為:按鈕的id,按鈕的初始風格等

2、用mfc的c*******ctrl類建立

crect rt;

getclientrect(&rt);

rt.bottom = rt.top + 24;

m_ctltb.create(ws_child|ws_visiblet|bstyle_flat,rt,this,id_*******);

m_ctltb.addbitmap(3,idb_bitmap1);

m_ctltb.addbuttons(3,tbbuttons);

c*******ctrl只是api的簡單包裝,並沒增加功能

3、用mfc的c*******類建立

可參考的例子很多,msdn的例子:mfcie介紹了如何建立類似ie的具有文字標籤和下拉列表風格的按鈕

方法1:

構造c*******物件

c*******::create或c*******::createex建立工具欄

c*******::load*******載入位圖

方法2:

構造c*******物件

c*******::create或c*******::createex建立工具欄

c*******::loadbitmap載入位圖

c*******::setbuttons設定按鈕id

兩種方法區別在於是否利用*******資源

4、為什麼工具欄用256以上就會失真

工具欄內部應該以imagelist管理位圖,而預設是採用16色。為了使用

256以有更高色

必須以ilc_color8(256)或相應的值建立

imagelist。

然後tb_setimagelist訊息給工具欄設定新的

imagelist

,以同樣的方法還可以設定工具欄的熱點位圖。

建議參考msdn sample的

5、工具欄的風格:

在msdn中按《******* control and button styles》索引即可得到所有風格。有些風格對

版本有要求,更詳細請看msdn。

tbstyle_flat: 使工具欄上的按鈕表面平坦,按鈕邊界不會被繪出來,除非滑鼠指標在上面

tbstyle_list: 按鈕文字顯示在按鈕的左邊

tbstyle_tooltips:如果使用者將滑鼠指標停留在按鈕上較長時間就使按鈕產生ttn_needtext通知訊息。

程式設計師負責為這個工具提示提供文字

tbstyle_wrapable:使控制項將其按鈕排成多行以適應當前的控制項大小

tbstyle_altdrag:允許使用者按住alt來拖動按鈕的位置

tbstyle_customerase:使控制項處理wm_erasebkgnd 訊息時會產生nm_customdraw通知訊息

tbstyle_transparent:除按鈕以外工具欄是透明的,文字顯示在按鈕下面

擴充套件風格:

tbstyle_ex_drawddarrows :使工具欄能建立具有下拉列表的按鈕

還可以使用以cbrs開頭的控制條風格:

cbrs_top 控制條在框架視窗的頂部

cbrs_bottom

cbrs_noalign 當框架視窗改變大小時控制條不重置

cbrs_tooltips 控制條顯示tooptip資訊

cbrs_size_dynamic

cbrs_size_fixed

cbrs_floating

cbrs_flyby

cbrs_hide_inplace

還有以ccs開頭的通用控制項風格:

ccs_noresize: 被建立的控制條的大小由createwindow api呼叫指定。該風格忽略以下4種風格

ccs_top: 控制條沿其父視窗框架頂部/底部/左/右對齊並且其寬度設定為系統標準

ccs_bottom:

ccs_left:

ccs_right:

ccs_nodivider: 控制條自動沿其頂部繪製一條直線:通常用來將工具欄和選單分隔開

ccs_adjustable: 允許使用者動態配置工具欄

ccs_nomovey: 下面風格沒有明顯效果或是重複上面的風格

ccs_nomoveex:

ccs_noparentalign:

除此之處還有工具欄按鈕的風格和按鈕的狀態。

MFC工具欄程式設計

竅門 1 要在工具欄增加乙個分割欄,只要拖動某乙個按鈕稍稍往右移動一點便可以了。2 要刪除乙個工具欄按鈕,只要點住它,把它拖出工具欄即可。1 在窗體的右邊新建乙個工具欄。首先,在resourceview中的 右鍵選擇insert 新建乙個工具欄idr 1。畫上幾個按鈕。然後再mainframe中新增...

MFC工具欄程式設計

竅門 1 要在工具欄增加乙個分割欄,只要拖動某乙個按鈕稍稍往右移動一點便可以了。2 要刪除乙個工具欄按鈕,只要點住它,把它拖出工具欄即可。1 在窗體的右邊新建乙個工具欄。首先,在resourceview中的 右鍵選擇insert 新建乙個工具欄idr 1。畫上幾個按鈕。然後再mainframe中新增...

側邊工具欄

引用 日前,三星正式向galaxy note ii推送了包含側屏多工處理功能的韌體更新。和大多數智慧型手機底部滑出的多工處理不同,galaxy note ii包含的這種多工ui和許多web2.0 的表現形式極其相似,相比底部橫排或者全屏卡片式,側面直立顯示更為新穎。三星官方將這種多工處理的方式命名為...