六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]石家莊化工化纖有限公司 陳立敏 ---- 在VC++ 編程過程中,我們可以通過開發環境中的資源編緝器加入或修改工具條中的按鈕,并為其指定一個位圖。但是這種指定是靜態的,如何在程序中動態地改變工具條中按鈕的位圖,是我們下面要討論的問題。首先,我們來了解兩個重要的類: ---- 1. CToolBa...

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

---- 在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);
}
---- 好了,到現在可以編譯運行了。
---- 上面的程序雖然簡單,但基本上說明了按鈕圖標的動態改變方法,在編制實時檢測(或控制)系統中,完全可以用此來自動顯示儀器設備的運行狀態。使人一目了然。 


主站蜘蛛池模板: 亚欧乱色视频小说 | 手机看片日韩国产一区二区 | 三级视频在线观看 | 亚洲日本欧美产综合在线 | 天堂网在线视频 | 亚洲第一中文 | 淫片在线观看 | 日韩中文字幕在线亚洲一区 | 日本三级理论片 | 日本特黄特色aa大片免费 | 婷婷在线成人免费观看搜索 | 欧美五月激情 | 一二三四影视手机在线观看视频 | 日本三级2018亚洲视频 | 五月伊人婷婷 | 日日摸狠狠的摸夜夜摸 | 亚洲偷 | 天堂在线资源最新版 | 亚洲人成人77777在线播放 | 天天色天天干天天射 | 亚洲国产高清精品线久久 | 欧美一级欧美一级高清 | 色婷婷中文字幕 | 日韩亚洲一区中文字幕在线 | 色综合久久中文 | 色天天综合 | 日本护士后进式猛烈动态图片 | 日本天堂视频在线观看 | 五月婷婷激情四射 | 欧美在线中文 | 热久久国产欧美一区二区精品 | 香蕉免费一级视频在线观看 | 天天噜噜色 | 探花视频免费观看高清 | 七七七久久久久人综合 | 欧美性猛交ⅹxxx乱大交免费 | 日干夜操 | 殴美一级黄色片 | 欧美一级一级做性视频 | 色噜噜噜噜噜在线观看网站 | 欧美一级黄色录相 |