CButtonST中選單按鈕的構建

2021-06-09 16:02:58 字數 1690 閱讀 7183

前言:基於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的值,就可以使選單是否可用。在乙個函式中可以控制多個選單 方...