38#define LB_ARRAY_GRANULARITY 16
41#define LB_SCROLL_TIMEOUT 50
47#define LBS_DISPLAYCHANGED 0x80000000
91#define IS_OWNERDRAW(descr) \
92 ((descr)->style & (LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE))
94#define HAS_STRINGS(descr) \
95 (!IS_OWNERDRAW(descr) || ((descr)->style & LBS_HASSTRINGS))
98#define IS_MULTISELECT(descr) \
99 ((descr)->style & (LBS_MULTIPLESEL|LBS_EXTENDEDSEL) && \
100 !((descr)->style & LBS_NOSEL))
102#define SEND_NOTIFICATION(descr,code) \
103 (SendMessageW( (descr)->owner, WM_COMMAND, \
104 MAKEWPARAM( GetWindowLongPtrW((descr->self),GWLP_ID), (code)), (LPARAM)(descr->self) ))
106#define ISWIN31 (LOWORD(GetVersion()) == 0x0a03)
163 for (
i =
descr->top_item,
height = 0; i < descr->nb_items;
i++)
167 if (
i ==
descr->top_item)
return 1;
168 else return i -
descr->top_item;
186 if (max < descr->nb_items - 1)
max++;
296 TRACE(
"setting top item %d, scroll %d\n",
index, scroll);
314 diff -=
descr->items[
i].height;
319 diff +=
descr->items[
i].height;
384 if(
descr->item_height != 0)
385 remaining =
descr->height %
descr->item_height;
388 if ((
descr->height >
descr->item_height) && remaining)
390 TRACE(
"[%p]: changing height %d -> %d\n",
441 if (index < descr->top_item)
478 if (!
descr->nb_items)
return -1;
484 while (index < descr->nb_items)
501 if (
y >=
descr->item_height *
descr->page_size)
return -1;
510 if (
index < 0)
return 0;
537 if (!(
descr->UIState & UISF_HIDEFOCUS))
541 ERR(
"called with an out of bounds index %d(%d) in owner draw, Not good.\n",
index,
descr->nb_items);
560 if (!ignoreFocus && (
descr->focus_item ==
index) &&
566 TRACE(
"[%p]: drawitem %d (%s) action=%02x state=%02x rect=%s\n",
579 if (!(
descr->UIState & UISF_HIDEFOCUS))
596 TRACE(
"[%p]: painting %d (%s) action=%02x rect=%s\n",
635 if (!ignoreFocus && (
descr->focus_item ==
index) &&
653 descr->style &= ~LBS_NOREDRAW;
662 descr->style &= ~LBS_DISPLAYCHANGED;
680 HBRUSH
hbrush, oldBrush = 0;
721 if (
descr->focus_item == -1)
return;
722 if (!
descr->caret_on || !
descr->in_focus)
return;
790 for (
i = 0;
i <
descr->nb_tabs;
i++)
837 ERR(
"got an invalid buffer (Delphi bug?)\n" );
901 return exact ? -1 :
max;
925 if (*
str !=
'[')
res = -1;
926 else if (
p[1] ==
'-')
933 if (
str[1] ==
'-')
res = 1;
975#define CHECK_DRIVE(item) \
976 if ((item)->str[0] == '[') \
978 if (!strncmpiW( str, (item)->str+1, len )) return i; \
979 if (((item)->str[1] == '-') && !strncmpiW(str, (item)->str+2, len)) \
1052 RECT focusRect = {-1, -1, -1, -1};
1054 HBRUSH
hbrush, oldBrush = 0;
1061 else if (
descr->horz_pos)
1077 if (!
descr->nb_items && (
descr->focus_item != -1) &&
descr->caret_on &&
1091 for (
i =
descr->top_item; i < descr->nb_items;
i++)
1099 if (
i ==
descr->focus_item)
1124 col_pos =
descr->page_size - 1;
1134 if (focusRect.
top != focusRect.
bottom &&
1225 else return descr->item_height;
1275 if (!(diff =
descr->horz_pos -
pos))
return;
1341 const char *alphabet =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
1348 ERR(
"unable to get DC.\n" );
1356 descr->avg_char_width = (sz.
cx / 26 + 1) / 2;
1372 TRACE(
"current top item %d, index %d, fully %d\n",
descr->top_item,
index, fully);
1374 if (index <= descr->top_item)
top =
index;
1378 if (!fully) cols +=
descr->column_width - 1;
1379 if (cols >=
descr->column_width) cols /=
descr->column_width;
1381 if (index < descr->top_item + (
descr->page_size * cols))
return;
1392 if (index < descr->top_item +
descr->page_size)
return;
1411 TRACE(
"old focus %d, index %d\n", oldfocus,
index);
1452 if (
descr->items[
i].selected)
continue;
1461 if (!
descr->items[
i].selected)
continue;
1475 TRACE(
"cur_sel=%d index=%d notify=%s\n",
1495 if (oldsel != -1)
descr->items[oldsel].selected =
FALSE;
1536 if (
descr->anchor_item != -1)
1571 if (!
descr->items) max_items = 0;
1573 if (
descr->nb_items == max_items)
1594 if (index < descr->nb_items)
1617 TRACE(
"[%p]: measure item %d (%s) = %d\n",
1628 if (
descr->nb_items == 1)
1633 descr->selected_item++;
1638 if (index <= descr->selected_item)
1640 descr->selected_item++;
1641 descr->focus_item = oldfocus;
1677 TRACE(
"[%p]: added item %d %s\n",
1694 if (!
descr->nb_items)
1742 if (index < descr->nb_items)
1769 descr->selected_item = -1;
1770 else if (index < descr->selected_item)
1772 descr->selected_item--;
1781 if (
descr->focus_item < 0)
descr->focus_item = 0;
1796 descr->nb_items = 0;
1797 descr->top_item = 0;
1798 descr->selected_item = -1;
1799 descr->focus_item = 0;
1800 descr->anchor_item = -1;
1825 else if (count < descr->nb_items)
1827 while (count < descr->nb_items)
1864 static const WCHAR bracketW[] = {
']',0 };
1869 if (!long_names &&
entry.cAlternateFileName[0])
1877#define ATTRIBS (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | \
1878 FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_ARCHIVE)
1884 if (!long_names &&
entry.cAlternateFileName[0])
1893 if (
ret <= maxinsert) maxinsert++;
else maxinsert =
ret;
2018 else if (
descr->horz_extent)
2059 UINT pulScrollLines = 3;
2064 if ((delta < 0 && descr->wheel_remain < 0) ||
2065 (delta > 0 &&
descr->wheel_remain > 0))
2066 descr->wheel_remain += delta;
2068 descr->wheel_remain = delta;
2070 if (
descr->wheel_remain && pulScrollLines)
2073 pulScrollLines =
min((
UINT)
descr->page_size, pulScrollLines);
2077 if (cLineScroll < 0)
2078 cLineScroll -=
descr->page_size;
2092 TRACE(
"[%p]: lbuttondown %d,%d item %d, focus item %d\n",
2095 if (!
descr->caret_on && (
descr->in_focus))
return 0;
2097 if (!
descr->in_focus)
2103 if (
index == -1)
return 0;
2195 RECT clientRect, screenRect;
2203 if(
PtInRect(&clientRect, mousePos))
2208 descr->lphc->droppedIndex =
descr->nb_items ?
descr->selected_item : -1;
2216 POINT screenMousePos;
2217 HWND hWndOldCapture;
2220 screenMousePos = mousePos;
2226 if(!
PtInRect(&screenRect, screenMousePos))
2241 if (
PtInRect( &clientRect, mousePos ))
2248 if (
PtInRect( &clientRect, mousePos ))
2254 if(nHitTestType != 0)
2257 MAKELONG(screenMousePos.
x, screenMousePos.
y));
2261 if(hWndOldCapture != 0)
2276 if (
descr->captured)
2349 if (!
descr->captured)
return;
2354 else if (
y >=
descr->item_height *
descr->page_size)
2362 else if (
x >=
descr->width)
2396 bForceSelection =
FALSE;
2403 if (caret == -2)
return 0;
2405 if (caret == -1)
switch(
key)
2410 bForceSelection =
FALSE;
2412 caret =
descr->focus_item -
descr->page_size;
2417 caret =
descr->focus_item - 1;
2418 if (caret < 0) caret = 0;
2423 bForceSelection =
FALSE;
2425 caret =
descr->focus_item +
descr->page_size;
2430 caret =
descr->focus_item + 1;
2431 if (caret >=
descr->nb_items) caret =
descr->nb_items - 1;
2442 if (caret < 0) caret = 0;
2452 if (caret >=
descr->nb_items) caret =
descr->nb_items - 1;
2458 caret =
descr->nb_items - 1;
2470 bForceSelection =
FALSE;
2472 if (bForceSelection)
2473 caret =
descr->focus_item;
2479 descr->anchor_item = caret;
2483 descr->selected_item = caret;
2516 if (caret == -2)
return 0;
2536 prev_flags =
descr->UIState;
2538 return prev_flags !=
descr->UIState;
2561 descr->nb_items = 0;
2562 descr->top_item = 0;
2563 descr->selected_item = -1;
2564 descr->focus_item = 0;
2565 descr->anchor_item = -1;
2566 descr->item_height = 1;
2567 descr->page_size = 1;
2568 descr->column_width = 150;
2569 descr->horz_extent = 0;
2570 descr->horz_pos = 0;
2573 descr->wheel_remain = 0;
2574 descr->caret_on = !lphc;
2603 descr->style &= ~LBS_NODATA;
2624 descr->item_height = mis.itemHeight ? mis.itemHeight : 1;
2668 ERR(
"Wrong window class for listbox! fnId 0x%x\n",pWnd->
fnid);
2693 TRACE(
"[%p]: msg %s wp %08lx lp %08lx\n",
2795 return descr->nb_items;
2821 return descr->nb_items;
2838 if (
descr->nb_items == 0)
2841 return descr->selected_item;
2842 if (
descr->selected_item != -1)
2843 return descr->selected_item;
2844 return descr->focus_item;
2848 return descr->top_item;
2867 if(
descr->nb_items == 0)
2904 return descr->focus_item;
3017 return descr->horz_extent;
3023 return descr->anchor_item;
3054 return descr->locale;
3076 if (
descr->caret_on)
3079 if ((
descr->focus_item != -1) && (
descr->in_focus))
3084 if (!
descr->caret_on)
3087 if ((
descr->focus_item != -1) && (
descr->in_focus))
3091 case LB_GETLISTBOXINFO:
3092 return descr->page_size;
3129 if (
descr->focus_item != -1)
3136 descr->wheel_remain = 0;
3137 if ((
descr->focus_item != -1) &&
descr->caret_on)
3184 descr->captured = captured;
3268 if( lphc )
return 0;
3284 case WM_UPDATEUISTATE:
3293 if (
descr->focus_item != -1)
3300 WARN(
"[%p]: unknown msg %04x wp %08lx lp %08lx\n",
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define LB_INSERTSTRING_LOWER
#define LB_INSERTSTRING_UPPER
#define LB_ADDSTRING_LOWER
#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 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 LRESULT LISTBOX_SetHorizontalExtent(LB_DESCR *descr, INT extent)
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 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 LRESULT LISTBOX_SelectItemRange(LB_DESCR *descr, INT first, INT last, BOOL on)
static void LISTBOX_RepaintItem(LB_DESCR *descr, INT index, UINT action)
static LRESULT LISTBOX_GetItemRect(const LB_DESCR *descr, INT index, RECT *rect)
static INT LISTBOX_FindString(LB_DESCR *descr, INT start, LPCWSTR str, BOOL exact)
static BOOL LISTBOX_Destroy(LB_DESCR *descr)
#define LB_ARRAY_GRANULARITY
static LRESULT LISTBOX_HandleSystemTimer(LB_DESCR *descr)
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 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 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)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
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
BOOL NTAPI NtUserSetWindowFNID(HWND hWnd, WORD fnID)
#define EXCEPTION_EXECUTE_HANDLER
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const char textA[]
static const WCHAR textW[]
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const WCHAR dotW[]
static float(__cdecl *square_half_float)(float x
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
#define _SEH2_EXCEPT(...)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
#define RtlMoveMemory(Destination, Source, Length)
const char * SPY_GetMsgName(UINT msg, HWND hWnd)
#define ValidateHwnd(hwnd)
HBRUSH FASTCALL GetControlColor(PWND pwndParent, PWND pwnd, HDC hdc, UINT CtlMsg)
static const WCHAR empty_stringW[]
const struct builtin_class_descr LISTBOX_builtin_class
static const WCHAR listboxW[]
LRESULT WINAPI ListBoxWndProcW(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
LRESULT WINAPI ListBoxWndProcA(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static const WCHAR combolboxW[]
static BOOL LISTBOX_update_uistate(LB_DESCR *descr)
#define CHECK_DRIVE(item)
const struct builtin_class_descr COMBOLBOX_builtin_class
LRESULT WINAPI ListBoxWndProc_common(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode)
#define DRIVE_NO_ROOT_DIR
SIZE_T WINAPI HeapSize(HANDLE, DWORD, LPCVOID)
DWORD WINAPI GetLastError(void)
#define strncmpiW(s1, s2, n)
#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
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define LB_FINDSTRINGEXACT
#define GetWindowLongPtrW
#define LB_SETHORIZONTALEXTENT
BOOL WINAPI ReleaseCapture(void)
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)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
#define LB_GETANCHORINDEX
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
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)
UINT_PTR WINAPI SetSystemTimer(HWND, UINT_PTR, UINT, TIMERPROC)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI KillSystemTimer(HWND, UINT_PTR)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#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 IsWindowEnabled(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
#define WM_CTLCOLORLISTBOX
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define SetWindowLongPtrW
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
BOOL WINAPI IsWindowVisible(_In_ HWND)
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
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)