這裡也有一些
在給按鈕上色的時候出了點問題。在網上找的方法基本上都不管用。說得跟真的一樣,各種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...