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
);
//函式功能: 畫乙個焦點矩形。這個矩形是在標誌焦點的樣式中通過異或運算完成的(焦點通常用乙個點線表示)。
//如用同樣的引數再次呼叫這個函式,就表示刪除焦點矩形
下面是程式**:
voidcbtnxiaowei::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...