乙個繼承於cbutton的按鈕控制項類,實現button背景色與文字的共存與改變,可以自行設計背景色。
標頭檔案:cmybutton.h 如下:
#pragma once
#include "afxwin.h"
class cmybutton : public cbutton
;原始檔:cmybutton.cpp
#include "stdafx.h"
#include "cmybutton.h"
cmybutton::cmybutton(void)
cmybutton::~cmybutton(void)
//cmybutton是cbutton派生類,具有cbutton的全部成員函式,
//但在建立時需要使用bs_ownerdraw風格。
//如果按鈕不是動態生成,使用attach函式使cmybutton代替原來按鈕的視窗過程。
bool cmybutton::attach(const uint nid, cwnd* pparent)
void cmybutton::setdowncolor(colorref color)
void cmybutton::setupcolor(colorref color)
void cmybutton::drawitem(lpdrawitemstruct lpdrawitemstruct)
else //當按鈕不操作或者彈起時
if ((lpdrawitemstruct->itemstate &ods_selected)&&(lpdrawitemstruct->itemaction &(oda_select| oda_drawentire)))
if (!(lpdrawitemstruct->itemstate & ods_selected) &&(lpdrawitemstruct->itemaction & oda_select))
dc.detach();//
}呼叫cmybutton類的方式:
在對話方塊類標頭檔案中#include "cmybutton.h",再在對話方塊類中找到函式oninitdialog()
如果找不到可以在對話方塊事件屬性中過載出來,
其中m_cbbtn變數的宣告為:
cmybutton m_cbbtn;//這句可以放在類的其他地方,只要合法就行
//將按鈕修改為bs_ownerdraw風格,其他風格無效
getdlgitem(idc_button1)->modifystyle(0,bs_ownerdraw,0);
//繫結控制項idc_button1與類cmybutton,響應過載函式drawitem()
m_cbbtn.attach(idc_button1,this);
//設定button down的背景色
m_cbbtn.setdowncolor(rgb(255,0,0));
//設定button up的背景色
m_cbbtn.setupcolor(rgb(0,0,255));
ps:如果連線**時在m_cbbtn.attach(idc_button1,this);這句產生中斷,可能的原因是idc_button1控制項已經繫結了一次訊息,這裡再次繫結當然不成功啦,
改正方法為:將對映函式dodataexchange()中
//ddx_control(pdx, idc_button1, m_cbbtn);//這句注釋掉就可以了。
MFC 控制項背景色
由於需要,要講groupbox控制項和文字控制項static的背景色設為一致。onctrlcolor中設定groupbox背景色 if pwnd getdlgctrlid idc g if pwnd getdlgctrlid idc static1 設定後效果 有個白色背景不符合要求 需要新增此句 ...
改變TreeView控制項的背景色
private declare function sendmessage lib user32 alias sendmessagea byval hwnd as long,byval wmsg as long,byval wparam as long,lparam as long as long p...
vc 設定控制項的背景色
過載onctlcolor函式,這個是必須的 設定控制項的背景顏色 第一 afx msg hbrush onctlcolor cdc pdc,cwnd pwnd,uint nctlcolor 在標頭檔案中宣告 在主檔案中 第二 begin message map cok1dlg,cdialog afx...