前言:基於mfc based dlg實現,環境:vc++ 6.0
正文:
新建乙個mfc based dlg的工程,命名為:trymenu_1
實現效果如圖:
一、工具條的建立與載入
1、首先資源檢視中新建乙個menu資源,如圖:
其中整個menu資源的id號為:idr_menu1,第乙個選單項「one」的id號為:idm_1,第二個選單項「two」的id號為:「idm_2」
2、用工具條製作工具製作乙個工具條,製作好的工具條檔案如圖:
然後在資源檢視中新建乙個*******資源,儲存之後,到工程下的res資料夾下,找到生成的bmp檔案,然後用我們的*******影象覆蓋這個影象,這裡要注意一點是,如果我們製作的*******不是16*16的,在vc++中將會打不開,解決辦法也很簡單,儲存成16*16的影象重新覆蓋就可以了。
在vc++中將工具欄中第乙個圖的id設為:idm_1,第二個設定為:idm_2;即跟選單項設定為相同的id。
3、載入btton中顯示的點陣圖影象
二、按鈕建立
1、將btn.h,btn.cpp,bcmenu.h,bcmenu.cpp全部載入到工程中,並在ctrymenu_1dlg
.h中新增
#include "btnst.h"
#include "bcmenu.h"
2、在dlg中新增乙個按鈕控制項,並關聯乙個變數,命名為:m_menubtn,這時classwizard會在
ctrymenu_1dlg
cbutton m_menubtn;
這時我們將這行**注釋掉,改為
cbuttonst m_menubtn;
3、在ctrymenu_1dlg的oninitdlg()中新增如下**:
this->m_menubtn.setmenu(idr_menu1,this->m_hwnd,true,idr_*******1);
this->m_menubtn.seticon(idi_icon1);
this->m_menubtn.setflat(true);
至此實現了,所有開頭所示的功能;
標註:該工程在vs2008中編譯不會通過,總是在verify(systemparametersinfo(spi_getnonclientmetrics,nm.cbsize,&nm,0));這句產生異常
解決辦法是:在bcmenu.cpp中查詢nm.cbsize = sizeof (nonclientmetrics);將所有的這條語句改為:nm.cbsize = sizeof (nonclientmetrics)-sizeof(nm.ipaddedborderwidth);就可以成功編譯了。
MFC中透明按鈕 CbuttonST
因為設計的互動介面按鈕都是一些和背景融為一體的,所以經過一番搜尋,用了別人寫好的類cbuttonst 1.是加入 兩個標頭檔案 乙個是bcmenu.h 另外乙個是 btnst.h,還有乙個cpp btnst.cpp 2.工具箱按鈕放進去之後,右鍵按鈕,給按鈕 新增 變數 例如 變數型別 cbutto...
SDK程式設計中選單資源的載入?
在程式中引用選單 大多數windows應用程式在資源描述檔案中只有乙個選單。您可以給選單起乙個與程式名稱相同的文字的名稱。程式寫作者經常將程式名用於選單名稱,以便相同的字串可以用於視窗類別 程式的圖示名稱和選單名稱。然後,程式在視窗的定義中為選單引用該名稱 雖然訪問選單資源的最常用方法是在視窗類別中...
MFC中選單變灰的問題
mfc中選單變灰 方法1 有updatecmdui控制代碼時 定義乙個bool變數m b來標誌選單項是否有效,該選單項響應update command ui訊息,在訊息處理函式中pcmdui enable m b 以後你根據需要來設定m b的值,就可以使選單是否可用。在乙個函式中可以控制多個選單 方...