美化CListCtrl中顯示的焦點行

2021-04-12 14:19:24 字數 939 閱讀 8430

經常使用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 首先呼叫 defau...

CListCtrl非啟用狀態高亮顯示

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

CListCtrl非啟用狀態高亮顯示

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