1. 程式人生 > >CListCtrl修改指定行的顏色

CListCtrl修改指定行的顏色

新增自己的列表控制元件類CMyListCtrl m_List派生CListCtrl.

//新增訊息
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, &CMyListCtrl::OnNMCustomdraw)
//函式實現
void CMyListCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
	 /*修改內容: 
	   改用switch case語句
	   case語句中增加了CDDS_ITEMPREPAINT和CDDS_ITEMPOSTPAINT兩個狀態判斷
	   同時在改變顏色時增加了一個函式SetItemState
	   */
	 static BOOL s_bThisItemSelect = FALSE;   
	 NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR); 
	 int nItemIndex=pLVCD->nmcd.dwItemSpec;
	 *pResult = CDRF_DODEFAULT;   
	 switch (pLVCD->nmcd.dwDrawStage) 
	 {   
	 case CDDS_PREPAINT:  
		 *pResult = CDRF_NOTIFYITEMDRAW;  
		 break;   
	 case CDDS_ITEMPREPAINT:  
		 {    
			 UINT ordin = pLVCD->nmcd.lItemlParam; 
			 s_bThisItemSelect = FALSE; 
			 //選中行顏色改變
			 if (GetItemState(nItemIndex,LVIS_SELECTED) == LVIS_SELECTED/*pLVCD->nmcd.uItemState & CDIS_SELECTED*/)
			 {      
				 s_bThisItemSelect = TRUE; 
				 //增加了下面這個SetItemState函式
				 SetItemState(pLVCD->nmcd.dwItemSpec, 0, LVIS_SELECTED); 
				 pLVCD->clrText = RGB(0,0,255)/*m_SelectItemTextColor*/;     
				 pLVCD->clrTextBk =RGB(255,128,0)/*m_SelectItemBkColor*/;   
			 }          
			 
             else if((nItemIndex==m_nHoverIndex))
			 { //熱點行
				 pLVCD->clrTextBk=m_HoverItemBkColor;
				 pLVCD->clrText=m_HoverItemTextColor;
			 }
			 else if(nItemIndex % 2==0)
			 {//偶數行 比如 0、2、4、6
				 pLVCD->clrTextBk=m_EvenItemBkColor;
				 pLVCD->clrText=m_EvenItemTextColor;
			 }
			 else
			 {	//奇數行 比如 1、3、5、7
				 pLVCD->clrTextBk=m_OddItemBkColor;
				 pLVCD->clrText=m_OddItemTextColor;
			 }
		 *pResult = CDRF_NOTIFYPOSTPAINT;    
	}       
		 break;    
		 //加了一個狀體判斷
	 case CDDS_ITEMPOSTPAINT:   
		 if (s_bThisItemSelect) 
	 	 SetItemState(pLVCD->nmcd.dwItemSpec, 0xFF, LVIS_SELECTED);  
		 break;  
	 } 
	
}

 
 
//新增PreSubclassWindow
void CMyListCtrl::PreSubclassWindow()
{
	// TODO: Add your specialized code here and/or call the base class

	 ModifyStyle(LVS_SHOWSELALWAYS, LVS_SINGLESEL);    // TRICKY!!! can`t with LVS_SHOWSELALWAYS 
	 SetExtendedStyle(GetExtendedStyle()|LVS_EX_FULLROWSELECT);    
	 CListCtrl::PreSubclassWindow(); 
}

我空間程式碼可以自己看下。http://download.csdn.net/detail/lcalqf/7815847

相關推薦

CListCtrl修改指定顏色

新增自己的列表控制元件類CMyListCtrl m_List派生CListCtrl. //新增訊息 ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, &CMyListCtrl::OnNMCustomdraw) //函式實現 void CMyListC

CListCtrl單雙顏色不同

 從CListCtrl派生一個類吧。網上有這類程式碼。就是新增NM_CUSTOMDRAW的響應函式,在裡面可以實現單雙行不同顏色,選中行不同顏色: void CListCtrlEx::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)

修改bash終端命令顏色

變量 es2017 令行 base 通用 第一個 主機名 nth 打開 要修改linux終端命令行顏色,我們需要用到PS1,PS1是Linux終端用戶的一個環境變量,用來說明命令行提示符的設置。在終端輸入命令:#set,即可在輸出中找到關於PS1的定義如下:   PS1=

Python修改檔案往指定插入內容

需求:批量修改py檔案中的類屬性,為類增加一個core = True新的屬性 原py檔案如下 a.py class A(): description = "abc" 現在有一個1.txt文字,內容如下,如果有py檔案中的description跟txt文字中的一樣,則增加

關於怎麼在CSDN中修改程式碼中字型的顏色

先吐槽一下自己的心路歷程吧,自己現在也是在CSDN中發表了自己好幾篇的原創博文,但每一篇博文自己總感覺怪怪的,就是說不出自己哪裡有毛病呢,知道今天恍然大悟,原來自己的程式碼行真心醜的要死,沒有呈現出在編輯器中的顏色對比變化的形式,痛定思痛,於是自己終於找到了一種更改程式碼行顏色的方法,方

Ext.Net 1.x_Ext.Net_修改grid或者列的背景顏色和字型顏色

修改某一列的背景顏色和字型顏色 css程式碼 .x-grid-back-red { background: #FF0000; //修改背景顏色 color:#000000; //修改字型顏色 } JS程式碼 { header : '分成型

ubuntu下修改終端命令輸入顏色配置

1.背景 玩ubuntu終端時,因為命令輸入行顏色預設是依據終端配置檔案中的顏色方案,往往是與輸出文字同一顏色,因此輸出文字一多的情況下經常是無法一下子就判別出從哪一行開始輸出的,所以有必要對其進行自主配色。 2.操作 1)進入~/.bashrc檔案,找到

C# NPOI 修改指定單元格的樣式 或者樣式

#region 2.NPOI讀取Excel 驗證Excel資料的有效性(非空) 並修改指定單元格樣式             IWorkbook workbook = null;             ISheet sheet = null;             Ar

jquery 表格的增加刪除和修改及設定奇偶顏色

最近一週在學了一點點HTML, CSS, javascript,用javascript的jquery完成了一個簡單的表格操作,有增加、刪除和修改功能。 表格分三列,第一列是學生編號(ID號),第二列是學生姓名,第三列為學生年齡。在姓名和年齡框內輸入資料,再點“Add”就可以增加資料(ID號會自動遞增

ext修改顏色,隔顏色沒變解決方案

在ext修改行顏色的過程中,發現奇數行的換顏色了,偶數行沒換顏色,後來查文件,發下: 隔行換色 True實現隔行換顏色的效果。(預設為true) 通過把樣式x-grid-row-alt交替新增到grid行,實現隔行換色效果。 預設的CSS規則是設定背景顏色,但

linux C 修改文字檔案中指定的內容

1、可隨意修改內容 /* * Author:aniu12<[email protected]> * Date: 2014.02.13 */ #include<stdio.h> #include<stdlib.h> #in

CListCtrl 詳解 獲取列數 獲取總行數 修改的數值

1.獲取CListCtrl 列數 //m_List是一個CListCtrl CHeaderCtrl*   pHeaderCtrl   =   m_List.GetHeaderCtrl(); if(pHeaderCtrl) {         int   n   =

python 簡單檔案操作 修改檔案指定

使用python進行簡單的檔案讀寫 例一: #!/usr/bin/python import sys import re if __name__=="__main__": f=file("hi.txt","w+") li=["hello\n","hi\n"] f.w

MFC中修改CStdioFile檔案中指定

程式不復雜,所以在這裡只敘述一下實現的過程。 (1)先定義一個CStringList  strText變數,將CStdioFile檔案中的資料逐行讀入strText中。 (2)刪除strText指定行,用修改後的資料重新寫入strText。 (3)最後將strText中資料

sed用法——在指定後面添加內容

ccie style cisc inux security txt 用法 color 添加內容 文檔內容如下: # cat 123.txt linuxciscohuaweinetworksystem 1. 使用sed命令在cisco行下面添加CCIE; # sed -i "

命令顏色換算器(基於python)

documents image document class clas profile 修改 span eight import sys print(hex(int(sys.argv[1])<<16|int(sys.argv[2])<<8|int(

linux獲取日誌指定數範圍內的內容

得到 http rep 不想 code 水流 clas -a 技術分享 假如我要獲取“淺淺歲月拂滿愛人袖”到“落入凡塵傷情著我”之間的內容。 1、首先得到他們所在的行號: -n選項顯示行號 但是有時候grep後顯示的是“匹配到二進制文件(標準輸入)”,說明搜索的字

sed應用 升級場景配置文件更新 指定追加

pan port rep func res list class strong lin function addLine() { confFile=configuration.xml isExist=`cat ${confFile} | grep "<liste

js 表格插入指定

table convert index add var span com new tel js在table指定tr行上或下面添加tr行 function onAddTR(trIndex) { var tb = document.get

首次加載進來DEV控件列表第一顏色總是不對,後臺代碼顯示的數據正確

ima nbsp des line 技術分享 selection lec sselect .com 1:行改變的顏色正確的顏色: 2:結果首次加載第一行顏色為: 3:解決方案:Views-->OptionsSelection -->EnableAppeara