MFC按鈕著色

2021-07-30 23:22:15 字數 2129 閱讀 7763

這裡也有一些

在給按鈕上色的時候出了點問題。在網上找的方法基本上都不管用。說得跟真的一樣,各種onctrlcolor()和onerasebkground(),各種技術帝的方法看起來都很厲害,但是都不管用。

真正有用的辦法是自定義button,才能實現按鈕顏色。但是這個辦法不免有些複雜,我這麼懶的人,既不想為這麼個小功能去重寫乙個類,也不想使用第三方的按鈕類,所以只能另闢蹊徑了。

所幸在codeproject上又找到了乙個大神寫的教程。使用cmfcbutton便可以實現這種功能。

接下來簡單介紹一下cmfcbutton的用法。建立乙個基於對話方塊的工程mfcbuttontest。在對話方塊編輯介面中,拖入乙個button控制項,改資源id號為idc_button_test。

接下來,在cmfcbuttontestdlg::oninitdialog()中新增如下**:

cmfcbutton * button = new cmfcbutton; 

button->create(_t("test button"), 

ws_visible, 

crect(5, 5, 80, 50), 

this, 

idc_button_test); 

注意!!這個行為是錯誤的,會有記憶體洩漏,只為寫個例子,真實工程中不允許這種寫法。

好了,執行一下吧,會看到螢幕上出現了兩個按鈕。

但是不用擔心,testbutton就是button1,button1就是testbutton,他們共享同乙個資源號。也可以說testbutton其實是button1的「影分身」,在對話方塊編輯介面中是看不到的。那麼解決方案就簡單啦,在對話方塊編輯介面中把button1的visible屬性設為false便可以了。

tips: 這樣一來,可以建立多個cmfcbutton,都使用同乙個id號,那麼他們可以分散在世界各地,而且還能執行同一段**,真夠帥氣!

再次執行。

好,接下來進入重頭戲。cmfcbutton的可定製性非常高,包括背景顏色、、按鈕字型、字型顏色、字型高亮顏色、滑鼠指標。。。等等等等,是個非常討喜的類。

接著就來實驗一下吧

還是cmfcbuttontestdlg::oninitdialog(),繼續新增一些方法。並且新增乙個按鈕用來顯示背景。既然有,就匯入乙個bmp吧,id號設為idb_bitmap1。調整一下視窗大小,讓按鈕完整地顯示出來。

cmfcbutton * button = new cmfcbutton; 

button->create(_t("test button"), 

ws_visible, 

crect(5, 5, 80, 50), 

this, 

idc_button_test); 

// 更改文字 

button->setwindowtextw(_t("強制更改")); 

// 更改背景顏色 

button->setfacecolor(rgb(153, 217, 234)); 

// 更改字型顏色 

button->settextcolor(rgb(255, 255, 255)); 

// 更改高亮顏色 

button->settexthotcolor(rgb(63, 72, 204)); 

// 更改位置 

button->movewindow(50, 50, 100, 70); 

// 滑鼠經過時變成手勢 

button->setmousecursorhand(); 

// 工具提示 

button->settooltip(_t("俺是提示")); 

cmfcbutton * button1 = new cmfcbutton; 

button1->create(_t("test button"), 

ws_visible, 

crect(160, 15, 280, 150), 

this, 

idc_button_test); 

// 載入 

button1->setimage(idb_bitmap1); 

於是,乙個難看的按鈕和乙個更難看的按鈕就此誕生了~

滑鼠經過時會變成手型,而且平時是白色的字,滑鼠經過時會變成圖中的藍色。

簡單吧?vs2010中應該還有很多可以造福程式設計師的類,以後要多多挖掘。

MFC單選按鈕

先為對話方塊加上2個radio button,分別是radio1和radio2。問題1 如何讓radio1或者radio2預設選上?如何知道哪個被選上了?關鍵是選上,預設 只要放在oninitdialog 即可。三種方法可以讓它選上 第一種 cbutton getdlgitem idc radio1...

mfc動態按鈕

動態按鈕 多個 的建立 1 在類中宣告並定義按鈕控制項的id define idc d btn 100002 在類的oninitdialog 函式中動態建立按鈕 建立按鈕物件時最好建立物件的指標 3 手動釋放物件指標 下面是動態生成多個按鈕的例子 cbutton btn new cbutton 5 ...

MFC按鈕特效

效果一 在按鈕上加入icon,使icon和文字同時顯示 假設按鈕id為idc button1 1.新增成員變數 cbuttonst m btn 2.新增icon資源,設其id設為idi icon1 3.在oninitdialog函式中初始化按鈕 m btn.subclassdlgitem idc b...