美化CListCtrl中顯示的焦點行

2021-03-31 08:56:58 字數 1105 閱讀 2174

經常使用

clistctrl

來顯示大量的資料

,但是總感覺焦點行的背景顏色為藍色,顯示的效果挺難看的,參考《

mfc技術內幕》這本書中的例子,自己修改了

clistctrl

的onpaint

**,把焦點行改為白色的背景,加了乙個矩形的邊框,下面實際的效果,自我感覺還不錯;

實現思路: 1、

首先呼叫

default

,讓clistctrl

自己畫

2、呼叫

getdc()

函式獲得dc

3、呼叫

getfont()

獲得當前字型 4、

使用getsubitemrect

函式獲得每乙個列的矩形大小

,然後使用

drawtext

函式把文字畫出來 5、

最後使用

rectangle

函式畫出邊框,這樣就達到了圖中的效果了

下面是主要的**

void cxlistctrl::onpaint()

//畫邊框

cpen * poldpen=dc->selectobject(m_selpen);

getitemrect(nsel,rect,lvir_bounds);

dc->selectstockobject(null_brush); //

設定null_brush

dc->rectangle(rect.left,rect.top,rect.right,rect.bottom);

dc->selectobject(poldpen);

dc->selectobject(poldbrush);

dc->selectobject(pfont);

} 在實現過程中,要注意的問題: 1、

焦點行的字型要和其他行的字型一樣 2、

每一列的對齊方式 3、

畫完焦點行的文字以後,再畫外邊框

當然,這只是乙個種效果,還可以畫出另外自己需要的效果;

美化CListCtrl中顯示的焦點行

經常使用clistctrl來顯示大量的資料,但是總感覺焦點行的背景顏色為藍色,顯示的效果挺難看的,參考 mfc技術內幕 這本書中的例子,自己修改了clistctrl的onpaint 把焦點行改為白色的背景,加了乙個矩形的邊框,下面實際的效果,自我感覺還不錯 實現思路 1 首先呼叫default,讓c...

CListCtrl非啟用狀態高亮顯示

之前遇到過,搜了半天,沒記錄,今天又遇到了,又搜了半天。當你希望開啟對話方塊時,clistctrl預設選擇一項時,這個很有用。不知道mfc為什麼這麼簡單的功能要搞這麼複雜。可能認識不夠吧,總結點是點。三個要點 一 always show selection false 總是顯示選定內容,即使控制項沒...

CListCtrl非啟用狀態高亮顯示

之前遇到過,搜了半天,沒記錄,今天又遇到了,又搜了半天。當你希望開啟對話方塊時,clistctrl預設選擇一項時,這個很有用。不知道mfc為什麼這麼簡單的功能要搞這麼複雜。可能認識不夠吧,總結點是點。三個要點 一 always show selection false 總是顯示選定內容,即使控制項沒...