人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

動態改變工具條中按鈕的位圖

動態改變工具條中按鈕的位圖

更新時間:2022-08-27 文章作者:未知 信息來源:網絡 閱讀次數:


石家莊化工化纖有限公司 陳立敏  

---- 在VC++ 編程過程中,我們可以通過開發環境中的資源編緝器加入或修改工具條中的按鈕,并為其指定一個位圖。但是這種指定是靜態的,如何在程序中動態地改變工具條中按鈕的位圖,是我們下面要討論的問題。首先,我們來了解兩個重要的類:

---- 1. CToolBar (工具條類) :

---- CToolBar 類的對象是帶有一行位圖按鈕和可選分隔線的控件條,它的成員函數為你提供了Windows通用控件的大多數性能。以下是我們將要用到的成員函數:

---- int CommandToIndex( UINT nID );

---- 功能:獲得 ID 值為 nID 的按鈕在工具條中的索引號。

---- (注:索引號代表了該按鈕在工具條中的位置。)

---- void GetButtonInfo(int nIndex,UINT& nID, UINT& nStyle, int& iImage);

---- 功能:獲得工具條中索引號為 nIndex 的按鈕的 ID 值,風格和圖象索引號。

---- (注:圖象索引號代表了與該按鈕相關的圖象在整個工具條按鈕圖象列表中的位置。)

---- void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage );

---- 功能:設置工具條中索引號為 nIndex 的按鈕的 ID 值,風格和圖象索引號。

---- CToolBarCtrl & GetToolBarCtrl( ) const;

---- 功能:獲得與此CToolBar類相聯系的CToolBarCtrl( 工具條控制類)的指針。函數返回值為引用類型。

---- 2)CToolBarCtrl( 工具條控制類) :

---- CToolBarCtrl類的對象包含幾個重要的內部數據結構:一個按鈕圖像列表,一個按鈕標簽字符串列表和一個TBBUTTON結構的列表,該結構使一個圖像和/或字符串與按鈕的位置,風格,主題和命令ID相關聯。它提供了Windows工具條通用控件的幾乎所有性能。它的成員函數使你能更加接近底層地去操作工具條控件。以下是我們將要用到的它的成員函數:

---- int AddBitmap( int nNumButtons, UINT nBitmapID );

---- 功能:將一個或更多個位圖按鈕圖像添加到工具條控件的按鈕圖像列表中。

---- 其中nNumButtons 位圖中的按鈕圖像的數目。

---- nBitmapID 包含按鈕圖像或要增加圖像的位圖的資源標識符。

---- 在下面的程序中,我們將實現這樣的功能:在主邊框窗口的工具條上有一個"紅燈"按鈕,當用戶點擊該按鈕后,按鈕變為"綠燈",再點擊又變為"黃燈"….

---- 操作步驟如下:

---- (一)生成基本應用程序框架:

---- 打開開發環境中的"文件"菜單,點擊"新建",選中Projects 標簽中的 MFC AppWizard(exe) 項,輸入項目名稱,然后回車;選中 Single document 單選按鈕,最后點擊"完成"。

---- (二)編緝工具條按鈕和位圖;

---- 1.在資源編緝器中,打開 ToolBar 新建一個按鈕(不用作圖)將其ID 改為 ID_LIGHT 。

---- 2.右擊 "resources"文件夾,選中"Insert…"項,插入位圖資源。然后加入三個位圖,分別編緝為"紅燈","綠燈"和"黃燈"三種圖象。ID值分別為:IDB_RED , IDB_GREEN , IDB_YELLOW 。

---- (三)增加成員變量:

---- 在CMainFrame 中加入六個成員變量:

        UINT  nID ;
UINT  nStyle ;
Int   index_red;
Int   index_green;
Int   index_yellow;
Int   flag;

---- 并在構造函數中將以上各成員變量均初始化為0。
---- (四)加入成員函數:

---- 1.右擊CMainFrame 類,選中"Add Windows Message Handler…"項,為CMainFrame加入響應消息 WM_SETFOCUS 的成員函數 OnSetFocus(CWnd* pOldWnd),在該函數中加入以下語句:

CToolBarCtrl & toolctrl=
m_wndToolBar.GetToolBarCtrl();
index_red=toolctrl.AddBitmap(1,IDB_RED);
index_green=toolctrl.AddBitmap(1,IDB_GREEN);
index_yellow=toolctrl.AddBitmap(1,IDB_YELLOW);
int index=m_wndToolBar.CommandToIndex(IDB_LIGHT);
int iImage;
m_wndToolBar.GetButtonInfo
(index,nID,nStyle,iImage);
m_wndToolBar.SetButtonInfo
(index,nID,nStyle,red_index);

---- 2.利用"Class Wizard"在CMainFrame 中加入按鈕命令 ID_LIGHT 的響應函數OnLight() , 在函數中加入以下語句:
light + +;
if(light > 2)
  light = 0;
switch(light)
{
case 0:
int index=m_wndToolBar.
CommandToIndex(IDB_LIGHT);
m_wndToolBar.SetButtonInfo
(index,nID,nStyle,index_red);
  break;
case 1:
  int index=m_wndToolBar.
CommandToIndex(IDB_LIGHT);
  m_wndToolBar.SetButtonInfo
(index,nID,nStyle,index_green);
  break;
case 2:
  int index=m_wndToolBar.
CommandToIndex(IDB_LIGHT);
  m_wndToolBar.SetButtonInfo
(index,nID,nStyle,index_yellow);
}
---- 好了,到現在可以編譯運行了。
---- 上面的程序雖然簡單,但基本上說明了按鈕圖標的動態改變方法,在編制實時檢測(或控制)系統中,完全可以用此來自動顯示儀器設備的運行狀態。使人一目了然。 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 万州区| 广德县| 仁布县| 科技| 霸州市| 九台市| 清水河县| 色达县| 龙州县| 扎囊县| 和平县| 新津县| 永州市| 台北县| 九寨沟县| 湖南省| 厦门市| 曲周县| 措美县| 平远县| 澜沧| 灵宝市| 涞源县| 大余县| 澄江县| 宝山区| 虹口区| 清丰县| 柘城县| 渝北区| 剑川县| 马边| 清苑县| 江达县| 蓝田县| 镇平县| 塔河县| 文水县| 大厂| 夹江县| 淄博市|