xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

一個自繪的CListCtrlEx列表控件類,可以支持: (1)設(shè)置奇數(shù)行背景顏色(默認(rèn)白色) (2)設(shè)置偶數(shù)行背景顏色(默認(rèn)白色) (3)設(shè)置熱點(diǎn)行背景顏色(默認(rèn)白色) (4)設(shè)置選中行背景顏色(默認(rèn)藍(lán)色) (5)設(shè)置奇數(shù)行文本顏色(默認(rèn)黑色) (6)設(shè)置偶數(shù)行文本顏色(默認(rèn)黑色) (7)設(shè)置熱點(diǎn)行文本顏色(默認(rèn)黑色) (8)設(shè)置選中行文本顏色(默認(rèn)黑色) (9)點(diǎn)擊列表頭,對列表內(nèi)的數(shù)據(jù)進(jìn)行升序/降序排列 (10)雙緩沖,解決了閃爍的問題

資源截圖

代碼片段和文件信息

//?ListCtrlEx.cpp?:?實(shí)現(xiàn)文件
//

#include?“stdafx.h“
#include?“ListCtrlEx.h“


//?CListCtrlEx
IMPLEMENT_DYNAMIC(CListCtrlEx?CListCtrl)

/**
?*?構(gòu)造函數(shù)
?*/
CListCtrlEx::CListCtrlEx()
{
m_hoverIndex = -1; //?當(dāng)前熱點(diǎn)項(xiàng)目索引
m_mouseTrack = true; //?追蹤鼠標(biāo)移動事件
m_if_hotLine = false; //?默認(rèn)不開啟熱點(diǎn)行更換顏色
m_oddItemBkColor = 0xFFFFFF; //?奇數(shù)行背景顏色(默認(rèn)白色)
m_evenItemBkColor = 0xFFFFFF; //?偶數(shù)行背景顏色(默認(rèn)白色)
m_hoverItemBkColor = 0xFFFFFF; //?熱點(diǎn)行背景顏色(默認(rèn)白色)
m_selectItemBkColor = GetSysColor(COLOR_HIGHLIGHT); //?選中行背景顏色(默認(rèn)藍(lán)色)
m_oddItemTextColor = GetSysColor(COLOR_BTNTEXT); //?奇數(shù)行文本顏色(默認(rèn)黑色)
m_evenItemTextColor = GetSysColor(COLOR_BTNTEXT); //?偶數(shù)行文本顏色(默認(rèn)黑色)
m_hoverItemTextColor = GetSysColor(COLOR_BTNTEXT); //?熱點(diǎn)行文本顏色(默認(rèn)黑色)
m_selectItemTextColor = GetSysColor(COLOR_BTNTEXT); //?選中行文本顏色(默認(rèn)黑色)
}


/**
?*?析構(gòu)函數(shù)
?*/
CListCtrlEx::~CListCtrlEx()
{
}


BEGIN_MESSAGE_MAP(CListCtrlEx?CListCtrl)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW?&CListCtrlEx::OnNMCustomdraw)
ON_WM_MOUSEMOVE()
ON_WM_MOUSELEAVE()
ON_WM_ERASEBKGND()
ON_WM_PAINT()
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK?&CListCtrlEx::OnLvnColumnclick)
END_MESSAGE_MAP()


/**
?*?排序回調(diào)函數(shù)
?*/
static?int?CALLBACK?SortFunction(LPARAM?lParam1?LPARAM?lParam2?LPARAM?lParamSort)
{
CString?&lp1?=?*((CString?*)lParam1);
CString?&lp2?=?*((CString?*)lParam2);
int?&sort?=?*(int?*)lParamSort;

if?(sort?==?0)
return?lp1.CompareNoCase(lp2);
else
return?lp2.CompareNoCase(lp1);
}


/**
?*?鼠標(biāo)在控件區(qū)域上移動時
?*/
void?CListCtrlEx::onmousemove(UINT?nFlags?CPoint?point)
{
if(m_if_hotLine?==?true)?{
//?獲取鼠標(biāo)當(dāng)前在哪一行上
int newIndex; //?當(dāng)前鼠標(biāo)的一行
int oldIndex; //?記錄原來的一行(也就是離開前的那一行)

newIndex?=?HitTest(point);
if(newIndex?!=?m_hoverIndex)?{
CRect?rc;
oldIndex?=?m_hoverIndex;
m_hoverIndex?=?newIndex;

//?刷新離開后的那一塊區(qū)域
if(oldIndex?!=?-1)?{
GetItemRect(oldIndex?&rc?LVIR_BOUNDS);
InvalidateRect(&rc);
}
//?刷新來到新的一塊的區(qū)域
if(m_hoverIndex?!=?-1)?{
GetItemRect(m_hoverIndex?&rc?LVIR_BOUNDS);
InvalidateRect(&rc);
}
}

//?鼠標(biāo)要追蹤WM_MOUSELEAVE事件
if?(m_mouseTrack)?{
TRACKMOUSEEVENT?csTME;
csTME.cbSize?=?sizeof(csTME);
csTME.dwFlags?=?TME_LEAVE; //?指定要追蹤的事件
csTME.hwndTrack?=?m_hWnd; //?指定要追蹤的窗口?
::_TrackMouseEvent(&csTME); //?開啟Windows的WM_MOUSELEAVE事件支持
m_mouseTrack?=?false; //?若已經(jīng)追蹤,則停止追蹤?
}
}

CListCtrl::onmousemove(nFlags?point);
}


/**
?*?鼠標(biāo)離開控件區(qū)域時
?*/
void?CListCtrlEx::onmouseleave()
{
if(m_if_hotLine?==?true)?{
//?開始追蹤
m_mouseTrack?=?true;

if(m_hoverIndex?!=?-1)?{
CRect?rc;
GetItemRect(m_hoverIndex&rcLVIR_BOUNDS);
InvalidateRect(&rc);
m_hoverIndex?=?-1;
m_mouseTrack?=?true;
}
}

CListCtrl::onmouseleave();
}


/**
?*?擦除背景
?*/
BOOL?CListCtrlEx::OnEraseBkgnd(CDC*?pDC)
{
return?FALSE;
}


/**
?*?繪畫
?*/
void?CListCtrlEx::OnPaint()
{
CPai

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????7673??2014-05-03?20:20??ListCtrlEx\ListCtrlEx.cpp

?????文件???????1449??2014-05-03?14:04??ListCtrlEx\ListCtrlEx.h

?????目錄??????????0??2014-05-03?20:34??ListCtrlEx

-----------?---------??----------?-----??----

?????????????????9122????????????????????3


評論

共有 條評論