CSliderCtrl的自繪製和滑鼠定位滑塊

2021-05-24 01:13:18 字數 776 閱讀 2633

首先建立乙個類繼承於csliderctrl然後由於要根據滑鼠左鍵定位到相應的位置,則必須要新增訊息響應函式onlbuttondown(),內容見下:

void cmyslider::onlbuttondown(uint nflags, cpoint point)

要自繪製滑塊等其他控制項,必須響應nm_customdraw訊息。

控制項的繪製是分為許多個不同的階段,而且分為不同部分一部分一部分繪製的,我們必須根據需要來控制繪製的**,函式體中的主要內容:

// 首先nmcd是乙個用於繪製的結構體具體引數可檢視msdn

// 當在繪製不同的部分時,會儲存不同部分的結構資訊

// 因此在程式建立時,此函式會被呼叫多次

nmcustomdraw nmcd = *(lpnmcustomdraw)pnmhdr;

dword dwstage = nmcd.dwdrawstage;

dword itemspec = nmcd.dwitemspec;

switch (dwstage)   // 採用switch - case結構來區分各個階段

// 忽略預設的繪製如果沒有這句

// 之前的工作就白費了

*presult = cdrf_skipdefault;

break; }

break;

case cdds_itempostpaint:

switch (itemspec)

break;

default:

break; }

}

改變滑動條CSliderCtrl的底色

有時候對話方塊的底色和滑動條的底色顏色不一致,導致顯示效果不理想,如下圖 為了解決這個問題,可以過載對話方塊類的onctlcolor函式,在其中新增 if nctlcolor ctlcolor static nctlcolor ctlcolor dlg 這裡的csliderctrl屬於static一...

解決自繪製控制項閃爍的問題

記得以前用vc開發自繪製控制項的時候,遇到的乙個很煩人的問題就是控制項在paint的時候總是出現flicker 閃爍 原因其實很簡單,就是你一點一點的向裝置上下文環境繪製,中間還有很多邏輯運算,結果就像是動畫了,不過計算機的速度比較快,所以呈現在我們面前的閃爍,而閃爍的出現大大的影響的客戶的使用體驗...

變數的自增 自減 自乘 自除

1.自增 自減 自乘 自除是乙個變數在原有值基礎上再增加 減去 乘以 除以乙個指定的值。通常用在迴圈語句中改變變數的值。2.自增 l 先加1 i 1 int i 0 i i 1 整數自增1 2 string s hello s s world 字串自增 3 自增1 的簡寫形式 i 先 1 再進行其他...