ReactOS 0.4.15-dev-6057-gd708c79
proclist.c File Reference
#include "precomp.h"
Include dependency graph for proclist.c:

Go to the source code of this file.

Functions

INT_PTR CALLBACK ProcessListWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 

Variables

WNDPROC OldProcessListWndProc
 

Function Documentation

◆ ProcessListWndProc()

INT_PTR CALLBACK ProcessListWndProc ( HWND  hWnd,
UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 31 of file proclist.c.

32{
33 HBRUSH hbrBackground;
34 RECT rcItem;
35 RECT rcClip;
36 HDC hDC;
37 int DcSave;
38
39 switch (message)
40 {
41 case WM_ERASEBKGND:
42
43 /*
44 * The list control produces a nasty flicker
45 * when the user is resizing the window because
46 * it erases the background to white, then
47 * paints the list items over it.
48 *
49 * We will clip the drawing so that it only
50 * erases the parts of the list control that
51 * show only the background.
52 */
53
54 /*
55 * Get the device context and save it's state
56 * to be restored after we're done
57 */
58 hDC = (HDC) wParam;
59 DcSave = SaveDC(hDC);
60
61 /*
62 * Get the background brush
63 */
65
66 /*
67 * Calculate the clip rect by getting the RECT
68 * of the first and last items and adding them up.
69 *
70 * We also have to get the item's icon RECT and
71 * subtract it from our clip rect because we don't
72 * use icons in this list control.
73 */
74 rcClip.left = LVIR_BOUNDS;
76 rcItem.left = LVIR_BOUNDS;
78 rcClip.bottom = rcItem.bottom;
79 rcClip.right = rcItem.right;
80 rcItem.left = LVIR_ICON;
82 rcClip.left = rcItem.right;
83
84 /*
85 * Now exclude the clip rect
86 */
87 ExcludeClipRect(hDC, rcClip.left, rcClip.top, rcClip.right, rcClip.bottom);
88
89 /*
90 * Now erase the background
91 *
92 *
93 * FIXME: Should I erase it myself or
94 * pass down the updated HDC and let
95 * the default handler do it?
96 */
97 GetClientRect(hWnd, &rcItem);
98 FillRect(hDC, &rcItem, hbrBackground);
99
100 /*
101 * Now restore the DC state that we
102 * saved earlier
103 */
104 RestoreDC(hDC, DcSave);
105
106 return TRUE;
107 }
108
109 /*
110 * We pass on all messages except WM_ERASEBKGND
111 */
113}
static HDC hDC
Definition: 3dtext.c:33
HWND hWnd
Definition: settings.c:17
WNDPROC OldProcessListWndProc
Definition: proclist.c:27
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
HBRUSH hbrBackground
Definition: enumwnd.c:12
static HDC
Definition: imagelist.c:92
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define LVIR_ICON
Definition: commctrl.h:2473
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2307
#define LVM_GETITEMRECT
Definition: commctrl.h:2477
#define LVIR_BOUNDS
Definition: commctrl.h:2472
Definition: tftpd.h:60
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
LONG_PTR LPARAM
Definition: windef.h:208
int WINAPI ExcludeClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI RestoreDC(_In_ HDC, _In_ int)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
int WINAPI SaveDC(_In_ HDC)
#define WM_ERASEBKGND
Definition: winuser.h:1615
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define GCL_HBRBACKGROUND
Definition: winuser.h:659
#define GetClassLongPtrW
Definition: winuser.h:4554
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by ProcessPageWndProc().

Variable Documentation

◆ OldProcessListWndProc

WNDPROC OldProcessListWndProc

Definition at line 27 of file proclist.c.

Referenced by ProcessListWndProc(), and ProcessPageWndProc().