mfc的標準控制項比較醜,所以需要自繪
1:建立mfc控制項的時候要加入ws_owner* 風格, 然後過載標準控制項的虛函式
bs_ownerdraw
2: onpaint 方法 即 wm_paint訊息很重要
動態加入資源,cimage物件 ,然後呼叫 draw(hdc控制代碼,crect) 繪製上去,利用將醜陋的灰色的窗體draw上去
然後滑鼠事件相應怎麼辦:
過載訊息響應, 監聽mouse的event onmousehover onmouseclick 滑鼠三態訊息 進行書寫實現**
我們不知道滑鼠時候離開所以要加入tagmouseevent訊息 進行響應。設定乙個漢奸 讓其告訴我們滑鼠的位置
窗體最大化 最小化時候的控制項位置問題
通常乙個窗體 left center right ,最大化時候 left right不變 center 根據getcliectrect動態獲取大小 減去左右兩邊的width 我們通常這樣做。
還有就是我們通常建立工程的時候建立dialog 工程,自己利用客戶區模擬非客戶區進行自繪,
invalidate()
動態loadfromresource(afxgetinstancehandle(), );
create方法 讓成員變數 放置在面板上 create方法指定位置和相關聯的控制代碼
自繪:wm_paint訊息 onpaint
draw函式
m_imgtool.draw(dc.m_hdc, rcclient); //當前dc的控制代碼
cdc dc;
dc.attach(hdc);
crect rcicon = rcitem;
dc.setbkmode(transparent); 設定背景透明 則就不會出現灰色的背景
dc.detach();
measureitem
自繪的時候 處處都要拿到crect 左上角的座標 右下角的座標
onsize:
movewindow 建立完後要發生size大小變化 所以要執行movewindow
oncreate:
cwnd::create方法 讓控制項載入到當前的wnd上,指明座標和位置
onpaint :
draw方法
mousehover mouseclick:
動態建立乙個cbutton按鈕並實現其on_bn_clicked訊息
實現:
一、建立按鈕
二、實現on_bn_clicked訊息
MFC自繪按鈕
1.建立乙個基於對話方塊的程式 2.在這裡,我是將 確定 按鈕重繪,拉大 確定 按鈕 如下 修改為自繪 3.新增位 件id為iidb bitmap1 4.新增類cmybutton基類為cbutton 後面兩個函式是我自己新增的,其中drawitem函式在基類中為虛函式,我們在派生類中過載,負責按鈕的...
MFC自繪控制項
1.c 中drawitem 函式不被呼叫的問題 自繪乙個cmybutton的時候,在drawitem 中改變了button的顏色,但是在程式執行時,drawitem 函式並沒有被執行,原因在於按鈕的型別並不是bs ownerdraw,所以我們需要把它改為 所有者繪製 解決方法 可以過載乙個presu...
MFC之自繪控制項
在描繪mfc介面時,mfc自帶的控制項樣式是絕對不滿足介面的需求的。所以我們就要在mfc自帶控制項基礎上對控制項樣式進行重繪。在採用自繪前介面樣式 採用自繪後介面樣式 是不是自繪控制項後看起來正常了很多?自繪控制項的步驟 我們以做乙個關閉按鈕為例 先建立乙個mfc類繼承自cbutton。給這個類新增...