MFC Button控制項自繪

2022-07-29 11:27:11 字數 2279 閱讀 4570

vc下的介面著實難看 有時候我們不得不自己進行控制項的繪製 以前 一直不理解最近再次看了學了一遍終於明白了一點

與大家分享下...       需要源**的q我 尋找一起學vc的朋友

比如說我們要改變乙個編輯框的背景 我們響應wm_ctlcolor函式 進行onctlcolor進行修改但是對與 button控制項就不行了 ..

這時候我們要進行自繪製    相關函式   virtual void drawitem( lpdrawitemstruct lpdrawitemstruct );

要覆蓋掉這個虛函式  並且型別要設定為 bs_ownerdraw 這時候 放 應用程式進行初始化介面的時候 會進入我們的

drawitem函式 進行控制項的繪製   所以說 自繪製 就2個步驟   

重繪需要的函式  注意 都是sdk中的函式

bool drawframecontrol(   //

這個函式畫乙個指定型別控制項的框架

hdc hdc, //

handle to device context dc

lprect lprc, //

bounding rectangle 舉行區域

uint utype, //

frame-control type 型別

uint ustate //

frame-control state 狀態 具體看msdn

);int drawtext( //

在指定的矩形區域 輸出文字

hdc hdc, //

handle to dc

lpctstr lpstring, //

text to draw

int ncount, //

text length

lprect lprect, //

formatting dimensions

uint uformat //

text-drawing options

);colorref settextcolor(

//設定指定dc的文字顏色

hdc hdc, //

handle to dc

colorref crcolor //

text color

);int fillrect( //

用給定畫刷填充矩形區域

hdc hdc, //

handle to dc

const rect *lprc, //

rectangle

hbrush hbr //

handle to brush

);int setbkmode( //

設定背景模式 transparent透明

hdc hdc, //

handle to dc

int ibkmode //

background mode

);typedef

struct tagdrawitemstruct drawitemstruct ;

draw3drect

( lpcrect lprect,

colorref clrtopleft,

colorref clrbottomright

); //此函式用於實現繪製3d矩形的位置大小,其中lprect是填入整個3d矩形的位置大小, //

clrtopleft和clrbottomright分別是3d效果中左上方和右下方的顏色rgb的值。

bool drawfocusrect

( 畫乙個虛線矩形

hdc hdc,

//handle to device context

const rect* lprc //

logical coordinates

);

//函式功能: 畫乙個焦點矩形。這個矩形是在標誌焦點的樣式中通過異或運算完成的(焦點通常用乙個點線表示)。

//如用同樣的引數再次呼叫這個函式,就表示刪除焦點矩形

下面是程式**:

void

cbtnxiaowei::drawitem(lpdrawitemstruct lpdrawitemstruct)

void

cbtnxiaowei::settextcoler(colorref clo)

MFC Button控制項

一.新增背景.利用cbitmapbutton.具體看msdn 1.資源裡按鈕屬性的ownerdraw改為true 2.新增背景到資源裡,bmp型別。命名 按鈕的caption為 aa,則分別命名 aau aad aaf aax 3.類 如xxdialog 新增成員變數cbitmapbutton m ...

自繪GroupBox控制項

下面顯示的是效果圖 然後是 其中有一些解釋 using system using system.collections.generic using system.componentmodel using system.diagnostics using system.text using syste...

MFC自繪控制項

1.c 中drawitem 函式不被呼叫的問題 自繪乙個cmybutton的時候,在drawitem 中改變了button的顏色,但是在程式執行時,drawitem 函式並沒有被執行,原因在於按鈕的型別並不是bs ownerdraw,所以我們需要把它改為 所有者繪製 解決方法 可以過載乙個presu...