38#define LB_ARRAY_GRANULARITY 16
41#define LB_SCROLL_TIMEOUT 50
47#define LBS_DISPLAYCHANGED 0x80000000
98#define IS_OWNERDRAW(descr) \
99 ((descr)->style & (LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE))
101#define HAS_STRINGS(descr) \
102 (!IS_OWNERDRAW(descr) || ((descr)->style & LBS_HASSTRINGS))
105#define IS_MULTISELECT(descr) \
106 ((descr)->style & (LBS_MULTIPLESEL|LBS_EXTENDEDSEL) && \
107 !((descr)->style & LBS_NOSEL))
109#define SEND_NOTIFICATION(descr,code) \
110 (SendMessageW( (descr)->owner, WM_COMMAND, \
111 MAKEWPARAM( GetWindowLongPtrW((descr->self),GWLP_ID), (code)), (LPARAM)(descr->self) ))
113#define ISWIN31 (LOWORD(GetVersion()) == 0x0a03)
133static const WCHAR listboxW[] = {
'L',
'i',
's',
't',
'B',
'o',
'x',0};
149static const WCHAR combolboxW[] = {
'C',
'o',
'm',
'b',
'o',
'L',
'B',
'o',
'x',0};
191 if (items_size >
descr->items_size ||
205 descr->items_size = items_size;
272 if (!
descr->u.items)
return;
274 if (index < descr->nb_items)
283 if (!
descr->u.items)
return;
285 if (index < descr->nb_items)
299 for (
i =
descr->top_item,
height = 0; i < descr->nb_items;
i++)
303 if (
i ==
descr->top_item)
return 1;
304 else return i -
descr->top_item;
322 if (max < descr->nb_items - 1)
max++;
453 TRACE(
"setting top item %d, scroll %d\n",
index, scroll);
548 if(
descr->item_height != 0)
604 if (index < descr->top_item)
641 if (!
descr->nb_items)
return -1;
647 while (index < descr->nb_items)
664 if (
y >=
descr->item_height *
descr->page_size)
return -1;
673 if (
index < 0)
return 0;
690 if (index < descr->nb_items)
698 && !(
descr->UIState & UISF_HIDEFOCUS);
713 if (!(
descr->UIState & UISF_HIDEFOCUS))
717 ERR(
"called with an out of bounds index %d(%d) in owner draw, Not good.\n",
index,
descr->nb_items);
742 TRACE(
"[%p]: drawitem %d (%s) action=%02x state=%02x rect=%s\n",
755 if (!(
descr->UIState & UISF_HIDEFOCUS))
772 TRACE(
"[%p]: painting %d (%s) action=%02x rect=%s\n",
827 descr->style &= ~LBS_NOREDRAW;
836 descr->style &= ~LBS_DISPLAYCHANGED;
854 HBRUSH
hbrush, oldBrush = 0;
895 if (
descr->focus_item == -1)
return;
896 if (!
descr->caret_on || !
descr->in_focus)
return;
919 return descr->items_size;
948 for (
i = 0;
i <
descr->nb_tabs;
i++)
997 ERR(
"got an invalid buffer (Delphi bug?)\n" );
1063 return exact ? -1 :
min;
1087 if (*
str !=
'[')
res = -1;
1088 else if (
p[1] ==
'-')
1095 if (
str[1] ==
'-')
res = 1;
1101 if (*
str ==
'[')
res = 1;
1153 if (item_str[0] ==
'[')
1215 RECT focusRect = {-1, -1, -1, -1};
1217 HBRUSH
hbrush, oldBrush = 0;
1224 else if (
descr->horz_pos)
1240 if (!
descr->nb_items && (
descr->focus_item != -1) &&
descr->caret_on &&
1254 for (
i =
descr->top_item; i < descr->nb_items;
i++)
1262 if (
i ==
descr->focus_item)
1287 col_pos =
descr->page_size - 1;
1298 if (focusRect.
top != focusRect.
bottom &&
1389 else return descr->item_height;
1439 if (!(diff =
descr->horz_pos -
pos))
return;
1494 TRACE(
"[%p]: new column width = %d\n",
descr->self, column_width);
1499 descr->column_width = column_width;
1516 const char *alphabet =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
1523 ERR(
"unable to get DC.\n" );
1531 descr->avg_char_width = (sz.
cx / 26 + 1) / 2;
1547 TRACE(
"current top item %d, index %d, fully %d\n",
descr->top_item,
index, fully);
1549 if (index <= descr->top_item)
top =
index;
1553 if (!fully) cols +=
descr->column_width - 1;
1554 if (cols >=
descr->column_width) cols /=
descr->column_width;
1556 if (index < descr->top_item + (
descr->page_size * cols))
return;
1567 if (index < descr->top_item +
descr->page_size)
return;
1654 TRACE(
"cur_sel=%d index=%d notify=%s\n",
1715 if (
descr->anchor_item != -1)
1771 TRACE(
"[%p]: measure item %d (%s) = %d\n",
1784 if (
descr->nb_items == 1)
1789 descr->selected_item++;
1794 if (index <= descr->selected_item)
1796 descr->selected_item++;
1797 descr->focus_item = oldfocus;
1830 TRACE(
"[%p]: added item %d %s\n",
1878 if (
descr->nb_items == 1)
1901 descr->selected_item = -1;
1902 else if (index < descr->selected_item)
1904 descr->selected_item--;
1913 if (
descr->focus_item < 0)
descr->focus_item = 0;
1929 descr->nb_items = 0;
1930 descr->top_item = 0;
1931 descr->selected_item = -1;
1932 descr->focus_item = 0;
1933 descr->anchor_item = -1;
1934 descr->items_size = 0;
1961 if (
count < orig_num)
1965 descr->selected_item = -1;
2014 if (!long_names &&
entry.cAlternateFileName[0])
2022#define ATTRIBS (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | \
2023 FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_ARCHIVE)
2029 if (!long_names &&
entry.cAlternateFileName[0])
2038 if (
ret <= maxinsert) maxinsert++;
else maxinsert =
ret;
2163 else if (
descr->horz_extent)
2204 INT pulScrollLines = 3;
2209 if ((delta < 0 && descr->wheel_remain < 0) ||
2210 (delta > 0 &&
descr->wheel_remain > 0))
2211 descr->wheel_remain += delta;
2213 descr->wheel_remain = delta;
2215 if (
descr->wheel_remain && pulScrollLines)
2220 pulScrollLines =
min(
descr->width /
descr->column_width, pulScrollLines);
2221 pulScrollLines =
max(1, pulScrollLines);
2224 cLineScroll *=
descr->page_size;
2228 pulScrollLines =
min(
descr->page_size, pulScrollLines);
2232 if (cLineScroll < 0)
2233 cLineScroll -=
descr->page_size;
2248 TRACE(
"[%p]: lbuttondown %d,%d item %d, focus item %d\n",
2251 if (!
descr->caret_on && (
descr->in_focus))
return 0;
2253 if (!
descr->in_focus)
2259 if (
index == -1)
return 0;
2353 RECT clientRect, screenRect;
2361 if(
PtInRect(&clientRect, mousePos))
2366 descr->lphc->droppedIndex =
descr->nb_items ?
descr->selected_item : -1;
2374 POINT screenMousePos;
2375 HWND hWndOldCapture;
2378 screenMousePos = mousePos;
2384 if(!
PtInRect(&screenRect, screenMousePos))
2399 if (
PtInRect( &clientRect, mousePos ))
2406 if (
PtInRect( &clientRect, mousePos ))
2412 if(nHitTestType != 0)
2415 MAKELONG(screenMousePos.
x, screenMousePos.
y));
2419 if(hWndOldCapture != 0)
2434 if (
descr->captured)
2507 if (!
descr->captured)
return;
2512 else if (
y >=
descr->item_height *
descr->page_size)
2520 else if (
x >=
descr->width)
2554 bForceSelection =
FALSE;
2561 if (caret == -2)
return 0;
2563 if (caret == -1)
switch(
key)
2568 bForceSelection =
FALSE;
2570 caret =
descr->focus_item -
descr->page_size;
2575 caret =
descr->focus_item - 1;
2576 if (caret < 0) caret = 0;
2581 bForceSelection =
FALSE;
2587 caret =
descr->focus_item + 1;
2588 if (caret >=
descr->nb_items) caret =
descr->nb_items - 1;
2599 if (caret < 0) caret = 0;
2609 if (caret >=
descr->nb_items) caret =
descr->nb_items - 1;
2615 caret =
descr->nb_items - 1;
2627 bForceSelection =
FALSE;
2629 if (bForceSelection)
2630 caret =
descr->focus_item;
2636 descr->anchor_item = caret;
2640 descr->selected_item = caret;
2673 if (caret == -2)
return 0;
2693 prev_flags =
descr->UIState;
2695 return prev_flags !=
descr->UIState;
2718 descr->items_size = 0;
2719 descr->nb_items = 0;
2720 descr->top_item = 0;
2721 descr->selected_item = -1;
2722 descr->focus_item = 0;
2723 descr->anchor_item = -1;
2724 descr->item_height = 1;
2725 descr->page_size = 1;
2726 descr->column_width = 150;
2727 descr->horz_extent = 0;
2728 descr->horz_pos = 0;
2731 descr->wheel_remain = 0;
2732 descr->caret_on = !lphc;
2761 descr->style &= ~LBS_NODATA;
2764 descr->style &= ~LBS_NODATA;
2769 descr->style &= ~LBS_OWNERDRAWVARIABLE;
2786 descr->item_height = mis.itemHeight ? mis.itemHeight : 1;
2836 TRACE(
"[%p]: msg %s wp %08Ix lp %08Ix\n",
2938 return descr->nb_items;
2964 return descr->nb_items;
2981 if (
descr->nb_items == 0)
2984 return descr->selected_item;
2985 if (
descr->selected_item != -1)
2986 return descr->selected_item;
2987 return descr->focus_item;
2991 return descr->top_item;
3010 if(
descr->nb_items == 0)
3047 return descr->focus_item;
3172 return descr->horz_extent;
3178 return descr->anchor_item;
3209 return descr->locale;
3231 if (
descr->caret_on)
3234 if ((
descr->focus_item != -1) && (
descr->in_focus))
3239 if (!
descr->caret_on)
3242 if ((
descr->focus_item != -1) && (
descr->in_focus))
3246 case LB_GETLISTBOXINFO:
3247 return descr->page_size;
3284 if (
descr->focus_item != -1)
3292 descr->wheel_remain = 0;
3293 if ((
descr->focus_item != -1) &&
descr->caret_on)
3340 descr->captured = captured;
3424 if( lphc )
return 0;
3440 case WM_UPDATEUISTATE:
3449 if (
descr->focus_item != -1)
3456 WARN(
"[%p]: unknown msg %04x wp %08Ix lp %08Ix\n",
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define LB_INSERTSTRING_LOWER
LRESULT WINAPI ListBoxWndProcW(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
#define LB_INSERTSTRING_UPPER
#define LB_ADDSTRING_LOWER
LRESULT WINAPI ListBoxWndProcA(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
#define LB_ADDSTRING_UPPER
static char selected[MAX_PATH+1]
BOOL COMBO_FlipListbox(LPHEADCOMBO lphc, BOOL ok, BOOL bRedrawButton)
static LRESULT LISTBOX_RemoveItem(LB_DESCR *descr, INT index)
#define SEND_NOTIFICATION(descr, code)
static LRESULT LISTBOX_InsertString(LB_DESCR *descr, INT index, LPCWSTR str)
static void LISTBOX_DrawFocusRect(LB_DESCR *descr, BOOL on)
static void LISTBOX_SetHorizontalPos(LB_DESCR *descr, INT pos)
static LRESULT LISTBOX_HandleKeyDown(LB_DESCR *descr, DWORD key)
static LRESULT LISTBOX_SetCaretIndex(LB_DESCR *descr, INT index, BOOL fully_visible)
static BOOL LISTBOX_SetTabStops(LB_DESCR *descr, INT count, LPINT tabs)
static LRESULT LISTBOX_HandleLButtonUp(LB_DESCR *descr)
static void remove_item_data(LB_DESCR *descr, UINT index)
static void LISTBOX_DeleteItem(LB_DESCR *descr, INT index)
static void LISTBOX_InvalidateItems(LB_DESCR *descr, INT index)
static LRESULT LISTBOX_GetSelCount(const LB_DESCR *descr)
static void LISTBOX_SetRedraw(LB_DESCR *descr, BOOL on)
static void LISTBOX_InvalidateItemRect(LB_DESCR *descr, INT index)
static LRESULT LISTBOX_GetText(LB_DESCR *descr, INT index, LPWSTR buffer, BOOL unicode)
static LRESULT LISTBOX_InitStorage(LB_DESCR *descr, INT nb_items)
static void LISTBOX_MakeItemVisible(LB_DESCR *descr, INT index, BOOL fully)
static INT LISTBOX_FindFileStrPos(LB_DESCR *descr, LPCWSTR str)
static LRESULT LISTBOX_SetSelection(LB_DESCR *descr, INT index, BOOL on, BOOL send_notify)
static LRESULT LISTBOX_HandleLButtonDownCombo(LB_DESCR *descr, UINT msg, DWORD keys, INT x, INT y)
static LRESULT LISTBOX_HandleVScroll(LB_DESCR *descr, WORD scrollReq, WORD pos)
#define IS_MULTISELECT(descr)
static void LISTBOX_ResetContent(LB_DESCR *descr)
static LRESULT LISTBOX_HandleTimer(LB_DESCR *descr, INT index, TIMER_DIRECTION dir)
#define HAS_STRINGS(descr)
static LRESULT LISTBOX_HandleMouseWheel(LB_DESCR *descr, SHORT delta)
static UINT get_item_height(const LB_DESCR *descr, UINT index)
static LRESULT LISTBOX_SetHorizontalExtent(LB_DESCR *descr, INT extent)
static void set_item_height(LB_DESCR *descr, UINT index, UINT height)
static void set_item_selected_state(LB_DESCR *descr, UINT index, BOOL state)
static LRESULT LISTBOX_InsertItem(LB_DESCR *descr, INT index, LPWSTR str, ULONG_PTR data)
static void LISTBOX_MoveCaret(LB_DESCR *descr, INT index, BOOL fully_visible)
static LRESULT LISTBOX_GetSelItems(const LB_DESCR *descr, INT max, LPINT array)
static BOOL is_item_selected(const LB_DESCR *descr, UINT index)
static LRESULT LISTBOX_Paint(LB_DESCR *descr, HDC hdc)
static void LISTBOX_UpdateScroll(LB_DESCR *descr)
static TIMER_DIRECTION LISTBOX_Timer
static LRESULT LISTBOX_SetTopItem(LB_DESCR *descr, INT index, BOOL scroll)
static INT LISTBOX_SetFont(LB_DESCR *descr, HFONT font)
static LRESULT LISTBOX_SetColumnWidth(LB_DESCR *descr, INT column_width)
static LRESULT LISTBOX_HandleHScroll(LB_DESCR *descr, WORD scrollReq, WORD pos)
static ULONG_PTR get_item_data(const LB_DESCR *descr, UINT index)
static LRESULT LISTBOX_SelectItemRange(LB_DESCR *descr, INT first, INT last, BOOL on)
static void set_item_data(LB_DESCR *descr, UINT index, ULONG_PTR data)
static void LISTBOX_RepaintItem(LB_DESCR *descr, INT index, UINT action)
static LRESULT LISTBOX_GetItemRect(const LB_DESCR *descr, INT index, RECT *rect)
static void set_item_string(const LB_DESCR *descr, UINT index, WCHAR *string)
static INT LISTBOX_FindString(LB_DESCR *descr, INT start, LPCWSTR str, BOOL exact)
static void insert_item_data(LB_DESCR *descr, UINT index)
static BOOL LISTBOX_Destroy(LB_DESCR *descr)
#define LB_ARRAY_GRANULARITY
static LRESULT LISTBOX_HandleSystemTimer(LB_DESCR *descr)
static BOOL resize_storage(LB_DESCR *descr, UINT items_size)
static LRESULT LISTBOX_Directory(LB_DESCR *descr, UINT attrib, LPCWSTR filespec, BOOL long_names)
static void LISTBOX_HandleMouseMove(LB_DESCR *descr, INT x, INT y)
static LRESULT LISTBOX_GetItemHeight(const LB_DESCR *descr, INT index)
#define LB_SCROLL_TIMEOUT
static INT LISTBOX_FindStringPos(LB_DESCR *descr, LPCWSTR str, BOOL exact)
static void LISTBOX_PaintItem(LB_DESCR *descr, HDC hdc, const RECT *rect, INT index, UINT action, BOOL ignoreFocus)
#define IS_OWNERDRAW(descr)
static INT LISTBOX_GetItemFromPoint(const LB_DESCR *descr, INT x, INT y)
static INT LISTBOX_lstrcmpiW(LCID lcid, LPCWSTR str1, LPCWSTR str2)
#define LBS_DISPLAYCHANGED
static size_t get_sizeof_item(const LB_DESCR *descr)
static LRESULT LISTBOX_HandleChar(LB_DESCR *descr, WCHAR charW)
static void LISTBOX_UpdatePage(LB_DESCR *descr)
static LRESULT LISTBOX_SetItemHeight(LB_DESCR *descr, INT index, INT height, BOOL repaint)
static void LISTBOX_UpdateSize(LB_DESCR *descr)
static WCHAR * get_item_string(const LB_DESCR *descr, UINT index)
static INT LISTBOX_GetCurrentPageSize(const LB_DESCR *descr)
static LRESULT LISTBOX_SetCount(LB_DESCR *descr, UINT count)
static INT LISTBOX_GetMaxTopIndex(const LB_DESCR *descr)
static BOOL LISTBOX_Create(HWND hwnd, LPHEADCOMBO lphc)
static LRESULT LISTBOX_HandleLButtonDown(LB_DESCR *descr, DWORD keys, INT x, INT y)
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
BOOL WINAPI IsValidLocale(LCID lcid, DWORD flags)
LCID WINAPI GetUserDefaultLCID(void)
LPWSTR WINAPI CharLowerW(WCHAR *str)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLdouble GLdouble GLdouble GLdouble top
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
VOID NTAPI NtUserNotifyWinEvent(DWORD Event, HWND hWnd, LONG idObject, LONG idChild)
BOOL NTAPI NtUserSetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
DWORD NTAPI NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *rect, const RECT *clipRect, HRGN hrgnUpdate, LPRECT rcUpdate, UINT flags)
HWND NTAPI NtUserSetFocus(HWND hWnd)
DWORD NTAPI NtUserSetScrollInfo(HWND hwnd, int fnBar, LPCSCROLLINFO lpsi, BOOL bRedraw)
BOOL NTAPI NtUserInvalidateRect(HWND hWnd, CONST RECT *lpRect, BOOL bErase)
HDC NTAPI NtUserGetDCEx(HWND hWnd, HANDLE hRegion, ULONG Flags)
BOOL NTAPI NtUserEndPaint(HWND hWnd, CONST PAINTSTRUCT *lPs)
HDC NTAPI NtUserBeginPaint(HWND hWnd, PAINTSTRUCT *lPs)
HWND NTAPI NtUserSetCapture(HWND Wnd)
SHORT NTAPI NtUserGetKeyState(INT VirtKey)
DWORD NTAPI NtUserShowScrollBar(HWND hWnd, int wBar, DWORD bShow)
BOOL NTAPI NtUserSetWindowFNID(HWND hWnd, WORD fnID)
#define EXCEPTION_EXECUTE_HANDLER
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const char textA[]
static const WCHAR textW[]
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
#define FILE_ATTRIBUTE_DIRECTORY
#define LBS_DISABLENOSCROLL
#define LBS_OWNERDRAWFIXED
#define LBS_OWNERDRAWVARIABLE
#define LBS_NOINTEGRALHEIGHT
#define LBS_WANTKEYBOARDINPUT
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define LB_FINDSTRINGEXACT
#define GetWindowLongPtrW
#define LB_SETHORIZONTALEXTENT
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SW_SCROLLCHILDREN
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
#define LB_GETANCHORINDEX
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI GetCapture(void)
#define LB_SETCOLUMNWIDTH
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
#define LB_SELITEMRANGEEX
#define LB_SETANCHORINDEX
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define LB_GETHORIZONTALEXTENT
#define SIF_DISABLENOSCROLL
#define COLOR_HIGHLIGHTTEXT
BOOL WINAPI DragDetect(_In_ HWND, _In_ POINT)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
#define WM_CTLCOLORLISTBOX
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
BOOL WINAPI IsWindowVisible(_In_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
LONG WINAPI TabbedTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_reads_(chCount) LPCWSTR lpString, _In_ int chCount, _In_ int nTabPositions, _In_reads_opt_(nTabPositions) CONST INT *lpnTabStopPositions, _In_ int nTabOrigin)
#define _SEH2_EXCEPT(...)
const struct builtin_class_descr LISTBOX_builtin_class
const struct builtin_class_descr COMBOLBOX_builtin_class
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
WNDPROC pfnComboListBoxProc
WNDPROC pfnListBoxWndProc
const char * SPY_GetMsgName(UINT msg, HWND hWnd)
#define NtUserSetPrivateData(HWND, OFFSET, SIZE, VALUE)
#define NTUSER_WNDPROC_LISTBOX
#define NtUserSetSystemTimer(HWND, ID, TIMEOUT)
#define NtUserReleaseDC(HWND, HDC)
#define NtUserGetPrivateData(HWND, OFFSET, SIZE)
#define NtUserKillSystemTimer(HWND, ID)
#define NtUserReleaseCapture()
HBRUSH FASTCALL GetControlColor(PWND pwndParent, PWND pwnd, HDC hdc, UINT CtlMsg)
static LB_DESCR * get_control_state(HWND hwnd)
static BOOL LISTBOX_update_uistate(LB_DESCR *descr)
LRESULT WINAPI ListBoxWndProc_common(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode)
static LB_DESCR * set_control_state(HWND hwnd, LB_DESCR *state)
#define DRIVE_NO_ROOT_DIR
DWORD WINAPI GetLastError(void)
#define ERROR_INVALID_INDEX
#define ERROR_SETCOUNT_ON_BAD_LB
#define ERROR_LB_WITHOUT_TABSTOPS
#define ERROR_NO_MORE_FILES
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI SetWindowOrgEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
#define GetTextExtentPoint32
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
int WINAPI SelectClipRgn(_In_ HDC, _In_opt_ HRGN)
BOOL WINAPI GetTextExtentPointA(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
#define CSTR_GREATER_THAN