LRESULT CALLBACK ListViewWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam)! ]) e4 E9 O3 D/ Y! f
{
* E0 W. k* _& { PAINTSTRUCT ps ={ 0 };9 v4 r$ O6 o6 S7 P& k* s0 q
RECT rect = { 0 };
6 ^! T. b5 e' Z+ u( Z HDC hPen = NULL;1 c8 u% U4 n' q9 A) R
HDC hBrush = NULL;
4 `# e; \- b3 K/ c int iCount = 0;! a# I; t4 \/ p h$ k! z
int i1 = 0;( Y# P2 i+ w: k$ X. r( Y
BYTE red0 = 115, green0 = 154, blue0 = 206;+ e: E2 `% l. |0 J
BYTE red1 = 255, green1 = 255, blue1 = 255;1 ^& O1 m- U. p& n4 N
BYTE red, green, blue;
' o6 {8 A7 o# x% q& C int j, m, n;
/ J0 L# b. P- V1 w% v8 g switch(uMsg)3 n" z1 c4 K$ I, f" A/ I0 G1 H" U
{2 K0 E N/ u- @, |! P
case WM_PAINT:
4 S5 v) a. _) I BeginPaint(g_hListViewHeader,
9 v; W7 ]7 o. W7 W, `) @- A hPen = SelectObject(ps.hdc, GetStockObject(DC_PEN));/ S# S6 ?; a$ {( K1 d- G7 i( i
iCount = Header_GetItemCount(g_hListViewHeader); // 获取表头数目
( w. k: t: j0 e5 D. C SetDCPenColor(ps.hdc, ColorToRGB((TColor)(0x00EFDBCE)));+ v5 E& J" v* b" I. l
red = GetRValue((TColor)(0x00EFDBCE));
3 k! c0 o7 ]2 k. s green = GetGValue((TColor)(0x00EFDBCE));- _ R, o4 |: ]3 T! a
blue = GetBValue((TColor)(0x00EFDBCE));# b: Q9 _$ O3 P
for (int i = 0; i Font->Handle);5 Y# G" x) X+ d7 o
i1 = ((rect.bottom - rect.top) - abs(Form1->Font->Height)) / 2;3 k7 I; M. v% y- v
hBrush = SelectObject(ps.hdc, GetStockObject(NULL_BRUSH));
5 I% |- l# Q' U/ A SetBkMode(ps.hdc, TRANSPARENT); // 这是设置背景为透明的- }# ?9 v9 |: D) P
TextOut(ps.hdc, rect.left + 10, rect.top + i1,
: k S- ^8 |% ^' ~ W2 {4 b# H Form1->ListView1->Columns->Items->Caption.c_str(),& S2 q3 j8 @: T, w0 V4 U
Form1->ListView1->Columns->Items->Caption.Length());
( Z" A5 M" N7 Q( w w8 c% | SelectObject(ps.hdc, hBrush);5 z& c9 r% v y1 U ^ R `+ K
}5 P* N+ _& }' c: I2 y8 k5 o
hPen = SelectObject(ps.hdc, hPen);
8 Q% i% Y, f" F% v8 q6 l! y6 p EndPaint(g_hListViewHeader,# z% u7 Y1 i# `1 p' ]! B9 l
break;
" u4 v3 a w7 _* M6 U" ~ default:
$ c6 ]; C2 o: f- g U7 r2 }9 _ return CallWindowProc((FARPROC)g_oldListViewWndProc, g_hListViewHeader,
7 n( V" @/ Q" M% D/ ]4 k4 } uMsg, wParam, lParam);
. K) w T* ^+ k5 p' L: I. y }
9 E& U2 ?% p- J& `6 m: z return 0;
; H" P8 s6 }# u }/ v% |# p( p* f! V) E2 j
// ---------------------------------------------------------------------------4 R1 D3 R' R& x9 m4 h" C5 v( ~0 W! {
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)& g$ R0 D! @, m# S; Z0 d8 y
{5 ^1 C; Q/ v4 N8 }5 q: t
g_hListViewHeader = FindWindowEx(ListView1->Handle, NULL, "SysHeader32",5 u! c5 E5 i f/ b& ~& @& ]3 F
NULL);
% i# S# V4 T3 S g_oldListViewWndProc = (TCallBack)GetWindowLong- ?! @* B2 L. `: j& F8 d* R
(g_hListViewHeader, GWL_WNDPROC);
/ m4 f. c7 M) j7 v& b SetWindowLong(g_hListViewHeader, GWL_WNDPROC, long(ListViewWindowProc));
* K! y* P& G5 u4 s# }, o0 g }
y# ]9 i- G' x6 N7 P1 T // ---------------------------------------------------------------------------1 T2 R0 q- p/ Z1 i4 d) z
__fastcall TForm1::~TForm1()
* M0 D# ^- F+ Q Q6 w% B$ ] {
$ i, o5 d1 t% x; @/ X6 c SetWindowLong(g_hListViewHeader, GWL_WNDPROC, (long)g_oldListViewWndProc);
! p3 I; [- O/ D! A3 c3 l } |