MFC重繪按鈕背景

2021-10-08 07:16:42 字數 1572 閱讀 2251

雖然不用mfc來開發,但是客戶還是讓我們用mfc,

不多說,

繼承cbutton重新實現類

#pragma once

#include "afxwin.h"

class cmybutton : public cbutton

;

#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::updata_ui()

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 *m_mybutton=new cmybutton();

m_mybutton->create(_t(str_title), ws_visible | ws_child,

crect(100, 100, 200, 200),

this, m_mybutton_id);//動態建立

getdlgitem(m_mybutton_id)->modifystyle(0,bs_ownerdraw,0);

m_mybutton->attach(m_mybutton_id, m_mybutton);

m_mybutton->setdowncolor(rgb(255,0,0));

m_mybutton->setupcolor(rgb(0,0,255));

m_mybutton->updata_ui();//更新顏色

效果:

MFC控制項背景重繪

mfc中改變dialog背景色和控制項底色,一般採取過載onctlcolor cdc pdc,cwnd pwnd,uint nctlcolor onctlcolor是控制項視窗函式 其畫刷控制代碼效果提示資訊函式 afx msg hbrush onctlcolor 構成 返回值,onctlcolor...

MFC自繪按鈕

1.建立乙個基於對話方塊的程式 2.在這裡,我是將 確定 按鈕重繪,拉大 確定 按鈕 如下 修改為自繪 3.新增位 件id為iidb bitmap1 4.新增類cmybutton基類為cbutton 後面兩個函式是我自己新增的,其中drawitem函式在基類中為虛函式,我們在派生類中過載,負責按鈕的...

Button 按鈕的重繪

using system using system.collections.generic using system.componentmodel using system.drawing using system.data using system.linq using system.text u...