雖然不用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...