經常使用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 總是顯示選定內容,即使控制項沒...