31#define WM_CTLCOLOR 0x0019
34#define EDITBOX_SEQ_INDEX 0
35#define NUM_MSG_SEQUENCES 1
40#define expect(expected, got) ok(got == expected, "Expected %d, got %d\n", expected, got)
42#define expect_rect(r, _left, _top, _right, _bottom) ok(r.left == _left && r.top == _top && \
43 r.bottom == _bottom && r.right == _right, "Invalid rect %s vs (%d,%d)-(%d,%d)\n", \
44 wine_dbgstr_rect(&r), _left, _top, _right, _bottom);
66 info->cbSize =
sizeof(*info);
78 memset(&cbexItem, 0x00,
sizeof(cbexItem));
88 memset(&cbexItem, 0x00,
sizeof(cbexItem));
112 static LONG defwndproc_counter = 0;
134 defwndproc_counter++;
136 defwndproc_counter--;
158 static const char *first_item =
"First Item",
159 *second_item =
"Second Item",
160 *third_item =
"Third Item",
161 *middle_item =
"Between First and Second Items",
162 *replacement_item =
"Between First and Second Items",
163 *out_of_range_item =
"Out of Range Item";
173 ok(
res == 0,
"Adding simple item failed (%d)\n",
res);
175 ok(
res == 1,
"Adding simple item failed (%d)\n",
res);
177 ok(
res == 2,
"Adding simple item failed (%d)\n",
res);
179 ok(
res == 1,
"Inserting simple item failed (%d)\n",
res);
183 ok(
res == -1,
"Adding using out of range index worked unexpectedly (%d)\n",
res);
185 ok(
res == -1,
"Adding using out of range index worked unexpectedly (%d)\n",
res);
193 ok(
res == 0,
"Getting item using out of range index worked unexpectedly (%d, %s)\n",
res, cbexItem.
pszText);
195 ok(
res == 0,
"Getting item using out of range index worked unexpectedly (%d, %s)\n",
res, cbexItem.
pszText);
197 ok(
res == 0,
"Getting item using out of range index worked unexpectedly (%d, %s)\n",
res, cbexItem.
pszText);
201 ok(
res != 0,
"Getting item using valid index failed unexpectedly (%d)\n",
res);
202 ok(
strcmp(first_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
205 ok(
res != 0,
"Getting item using valid index failed unexpectedly (%d)\n",
res);
206 ok(
strcmp(middle_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
209 ok(
res != 0,
"Getting item using valid index failed unexpectedly (%d)\n",
res);
210 ok(
strcmp(second_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
213 ok(
res != 0,
"Getting item using valid index failed unexpectedly (%d)\n",
res);
214 ok(
strcmp(third_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
218 ok(
res == 0,
"Setting item using out of range index worked unexpectedly (%d)\n",
res);
220 ok(
res == 0,
"Setting item using out of range index worked unexpectedly (%d)\n",
res);
222 ok(
res == 0,
"Setting item using out of range index worked unexpectedly (%d)\n",
res);
226 ok(
res != 0,
"Setting first item failed (%d)\n",
res);
228 ok(
res != 0,
"Setting last item failed (%d)\n",
res);
232 ok(
res ==
CB_ERR,
"Deleting using out of range index worked unexpectedly (%d)\n",
res);
234 ok(
res ==
CB_ERR,
"Deleting using out of range index worked unexpectedly (%d)\n",
res);
238 ok(
res == 3,
"Deleting using out of range index failed (%d)\n",
res);
240 ok(
res == 2,
"Deleting using out of range index failed (%d)\n",
res);
242 ok(
res == 1,
"Deleting using out of range index failed (%d)\n",
res);
244 ok(
res == 0,
"Deleting using out of range index failed (%d)\n",
res);
248 ok(
res ==
CB_ERR,
"Deleting using out of range index worked unexpectedly (%d)\n",
res);
266 static const UINT choices[] = {8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72};
277 memset(&cbexItem, 0x00,
sizeof(cbexItem));
283 "Failed to add item %d\n",
i);
293 "Focus not on Main Window, instead on %p\n",
GetFocus());
299 ok(
result,
"WM_LBUTTONDOWN was not processed. LastError=%d\n",
303 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
306 "The dropdown list should have appeared after clicking the button.\n");
308 ok(
idx == 0,
"For TopIndex expected %d, got %d\n", 0,
idx);
311 ok(
result,
"WM_LBUTTONUP was not processed. LastError=%d\n",
315 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
322 y = item_height/2 + item_height*4;
324 ok(!
result,
"WM_MOUSEMOVE was not processed. LastError=%d\n",
328 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
332 ok(!
result,
"WM_LBUTTONDOWN was not processed. LastError=%d\n",
336 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
339 "The dropdown list should still be visible.\n");
342 ok(!
result,
"WM_LBUTTONUP was not processed. LastError=%d\n",
346 "Focus not on ComboBoxEx's Edit Control, instead on %p\n",
352 "The dropdown list should have been rolled up.\n");
356 "Current Selection: expected %d, got %d\n", 4,
idx);
385 ok(
ret != 0,
"CBEM_GETITEM failed\n");
389 ok(
ret == 0,
"Expected zero length\n");
392 ok(
ret == 0,
"Expected zero length\n");
396 ok(
ret == 0,
"Expected zero length\n");
397 ok(
buff[0] == 0,
"Expected null terminator as a string, got %s\n",
buff);
411 ok(hCombo !=
NULL,
"createComboEx failed\n");
413 ok(
ret,
"GetWindowRect failed\n");
414 combo_height =
rect.bottom -
rect.top;
415 ok(combo_height > 0,
"wrong combo height\n");
421 wp.
cy = combo_height * 2;
427 ok(
ret == 0,
"expected 0, got %x\n",
ret);
428 ok(wp.
cy == combo_height,
429 "Expected height %d, got %d\n", combo_height, wp.
cy);
435 wp.
cy = combo_height / 2;
441 ok(
ret == 0,
"expected 0, got %x\n",
ret);
442 ok(wp.
cy == combo_height,
443 "Expected height %d, got %d\n", combo_height, wp.
cy);
446 ok(
ret,
"DestroyWindow failed\n");
493#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
494#define X2(f, ord) p##f = (void*)GetProcAddress(hComCtl32, (const char *)ord);
518 hMainWnd =
CreateWindowA(
WC_STATICA,
"Test",
WS_OVERLAPPEDWINDOW, 10, 10, 300, 300,
NULL,
NULL,
NULL, 0);
554 ok(hCombo !=
NULL,
"Failed to get internal combo\n");
556 ok(
hEdit !=
NULL,
"Failed to get internal edit\n");
558 if (pSetWindowSubclass)
560 ok(
GetPropA(hCombo,
"CC32SubclassInfo") !=
NULL,
"Expected CC32SubclassInfo property\n");
576 char textA[] =
"test";
599 item.lParam = 0xdeadbeef;
602 ok(
item.lParam == 0,
"Expected zero, got %lx\n",
item.lParam);
604 item.lParam = 0x1abe11ed;
611 ok(
item.lParam == 0x1abe11ed,
"Expected 0x1abe11ed, got %lx\n",
item.lParam);
618 return CreateWindowA(
WC_COMBOBOXA,
"Combo",
WS_VISIBLE|
WS_CHILD|
style, 5, 5, 100, 100,
hMainWnd, (
HMENU)
COMBO_ID,
NULL, 0);
649 for (
i = 1;
i < 30;
i++)
653 ok((
r.bottom -
r.top) == (
i + 6),
"Unexpected client rect height.\n");
677 HFONT hFont1, hFont2;
683 hFont1 =
CreateFontA(10, 0, 0, 0,
FW_DONTCARE,
FALSE,
FALSE,
FALSE,
SYMBOL_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|
FF_DONTCARE,
"Marlett");
684 hFont2 =
CreateFontA(8, 0, 0, 0,
FW_DONTCARE,
FALSE,
FALSE,
FALSE,
SYMBOL_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|
FF_DONTCARE,
"Marlett");
721 ok(0,
"Expected Marlett font heights 10/8, got %d/%d\n",
725 for (
i = 1;
i < 30;
i++)
727 HFONT hFont =
CreateFontA(
i, 0, 0, 0,
FW_DONTCARE,
FALSE,
FALSE,
FALSE,
SYMBOL_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|
FF_DONTCARE,
"Marlett");
732 ok((
r.bottom -
r.top) == (
height + 8),
"Unexpected client rect height.\n");
758 char list[20], edit[20];
762 memset(edit, 0,
sizeof(edit));
811 ok(
idx == -1,
"expected selection -1, got %d\n",
idx);
853 static const char *
const text[] = {
"alpha",
"beta",
"" };
854 static const int sel_1[] = { 2, 0, 1, 0, 1 };
855 static const int sel_2[] = { 0, 1, 0, 0, 1 };
864 INT ddheight, clheight, ddwidth, clwidth;
881 ok( rc.
right - rc.
left == clwidth - 2,
"clientrect width is %d vs %d\n",
883 ok( rc.
bottom - rc.
top == clheight,
"clientrect height is %d vs %d\n",
886 ok( rc.
right - rc.
left == clwidth - 2,
"drop-down rect width is %d vs %d\n",
888 ok( rc.
bottom - rc.
top == ddheight,
"drop-down rect height is %d vs %d\n",
890 ok( rc.
right - rc.
left == ddwidth -2,
"drop-down rect width is %d vs %d\n",
895 ok( rc.
right - rc.
left == clwidth + 2,
"clientrect width is %d vs %d\n",
897 ok( rc.
bottom - rc.
top == clheight,
"clientrect height is %d vs %d\n",
900 ok( rc.
right - rc.
left == clwidth + 2,
"drop-down rect width is %d vs %d\n",
903 ok( rc.
bottom - rc.
top == clheight + 2,
"drop-down rect height is %d vs %d\n",
908 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
910 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
913 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
915 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
918 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
920 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
923 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
925 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
928 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
930 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
933 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
935 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
964 ok(
strcmp(edit,
"Jason1")==0,
"Unexpected text retrieved %s\n", edit);
968 ok(
start==0,
"Unexpected start position for selection %d\n",
start);
969 ok(
end==0,
"Unexpected end position for selection %d\n",
end);
977 ok(
start==0,
"Unexpected start position for selection %d\n",
start);
978 ok(
end==6,
"Unexpected end position for selection %d\n",
end);
987 ok(
strcmp(edit,
"A")==0,
"Unexpected text retrieved %s\n", edit);
1009 ok(
strcmp(edit,
"Jason2")==0,
"Unexpected text retrieved %s\n", edit);
1015 ok(
start==0,
"Unexpected start position for selection %d\n",
start);
1016 ok(
end==6,
"Unexpected end position for selection %d\n",
end);
1027 ok(
strcmp(edit,
"Jason2A")==0,
"Unexpected text retrieved %s\n", edit);
1069 static const char wine_test[] =
"Wine Test";
1096 ok(
GetFocus() == hButton,
"hButton should have keyboard focus\n");
1111 ok(
GetFocus() == hButton,
"hButton should have keyboard focus\n");
1144 ok(exstyle == expect_exstyle,
"%08x: got %08x\n", cb_style, exstyle);
1153 ok(exstyle == expect_exstyle,
"%08x: got %08x\n", cb_style, exstyle);
1159 ok(exstyle == expect_exstyle,
"%08x: got %08x\n", cb_style, exstyle);
1176 for (
i = 0;
i < 3;
i++)
1197 static const char wine_test[] =
"Wine Test";
1202 static const struct list_size_info
1215 const struct list_size_info *info_test = &info_height[
test];
1218 int expected_height_list;
1219 RECT rect_list_client;
1220 int min_visible_expected;
1226 ok(min_visible_expected == 30,
"Unexpected number of items %d.\n", min_visible_expected);
1230 ok(
ret,
"Failed to get combo info, %d\n",
ret);
1232 hList = cbInfo.hwndList;
1233 for (
i = 0;
i < info_test->num_items;
i++)
1236 ok(
ret ==
i,
"Failed to add string %d, returned %d.\n",
i,
ret);
1239 if (info_test->limit != -1)
1241 int min_visible_actual;
1242 min_visible_expected = info_test->limit;
1245 ok(
ret,
"Failed to set visible limit.\n");
1247 ok(min_visible_expected == min_visible_actual,
"test %d: unexpected number of items %d.\n",
1248 test, min_visible_actual);
1252 ok(
ret,
"Failed to show dropdown.\n");
1254 ok(
ret,
"Unexpected dropped state.\n");
1257 height_list = rect_list_client.
bottom - rect_list_client.
top;
1262 RECT rect_list_complete;
1263 int list_height_nonclient;
1264 int list_height_calculated;
1265 int edit_padding_size = cbInfo.rcItem.
top;
1270 list_height_nonclient = (rect_list_complete.
bottom - rect_list_complete.
top)
1271 - (rect_list_client.
bottom - rect_list_client.
top);
1274 list_height_calculated = info_test->height_combo
1275 - (cbInfo.rcItem.bottom - cbInfo.rcItem.top)
1276 - list_height_nonclient
1277 - edit_padding_size * 2;
1279 expected_height_list =
min(list_height_calculated, height_item * info_test->num_items);
1280 if (expected_height_list < 0)
1281 expected_height_list = 0;
1283 ok(expected_height_list == height_list,
"Test %d, expected list height to be %d, got %d\n",
1284 test, expected_height_list, height_list);
1288 expected_height_list =
min(info_test->num_items, min_visible_expected) * height_item;
1290 ok(expected_height_list == height_list,
"Test %d, expected list height to be %d, got %d\n",
1291 test, expected_height_list, height_list);
1312 HBRUSH brush, global_brush;
1318 ok(!!combo,
"Failed to create combo window.\n");
1340 ok(!brush,
"%u: unexpected brush %p.\n",
i, brush);
1351 ok(!!brush && brush !=
brush_red,
"%u: unexpected brush %p.\n",
i, brush);
1358 combo =
CreateWindowA(
WC_COMBOBOXA,
"Combo",
CBS_DROPDOWN, 5, 5, 100, 100,
NULL,
NULL,
NULL, 0);
1359 ok(!!combo,
"Failed to create combo window.\n");
1366 ok(!brush,
"%u: unexpected brush %p.\n",
i, brush);
int strcmp(const char *String1, const char *String2)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static const WCHAR stringFormat[]
static void init_msg_sequences(struct msg_sequence **seq, int n)
static void flush_sequences(struct msg_sequence **seq, int n)
BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIDSubclass, DWORD_PTR dwRef)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
static unsigned char buff[32768]
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLint GLsizei GLsizei height
GLdouble GLdouble GLdouble r
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
#define sprintf(buf, format,...)
static const char textA[]
static HWND lparam_for_WM_CTLCOLOR
static void test_combo_changesize(DWORD style)
static void test_combo_ctlcolor(void)
static void test_comboex_CB_GETLBTEXT(void)
static LONG getItem(HWND cbex, int idx, COMBOBOXEXITEMA *cbItem)
static BOOL selchange_fired
static LONG addItem(HWND cbex, int idx, const char *text)
static void test_combo_setitemheight(DWORD style)
static void test_combo_editselection(void)
static LRESULT ComboExTestOnNotify(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
#define NUM_MSG_SEQUENCES
static void test_comboex_get_set_item(void)
static void test_combo_CBN_SELCHANGE(void)
static void test_combo_listbox_styles(DWORD cb_style)
static LRESULT CALLBACK combobox_subclass_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_combo_setfont(DWORD style)
static HWND subclass_editbox(HWND hwndComboEx)
static HWND hCBN_KillFocus
static void cleanup(void)
static HINSTANCE hMainHinst
static LONG delItem(HWND cbex, int idx)
static void test_comboex_WM_LBUTTONDOWN(void)
#define expect_rect(r, _left, _top, _right, _bottom)
static const struct message test_setitem_edit_seq[]
static HWND hComboExParentWnd
static void test_comboex(void)
static HWND createComboEx(DWORD style)
static struct msg_sequence * sequences[NUM_MSG_SEQUENCES]
static HWND create_combobox(DWORD style)
static LPCSTR expected_edit_text
static UINT WPARAM wparam
static void get_combobox_info(HWND hwnd, COMBOBOXINFO *info)
static UINT WPARAM LPARAM lparam
#define expect(expected, got)
static LRESULT WINAPI editbox_subclass_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static LRESULT CALLBACK ComboExTestWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void test_combo_editselection_focus(DWORD style)
static void test_combo_WS_VSCROLL(void)
static void test_comboex_WM_WINDOWPOSCHANGING(void)
static int get_font_height(HFONT hFont)
static const char ComboExTestClass[]
#define EDITBOX_SEQ_INDEX
static BOOL received_end_edit
static LRESULT CALLBACK test_window_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static WNDPROC edit_window_proc
static void test_combo_dropdown_size(DWORD style)
static void test_comboex_subclass(void)
static void init_functions(void)
static HWND hCBN_SetFocus
static LPCSTR expected_list_text
static LONG setItem(HWND cbex, int idx, const char *text)
static LRESULT CALLBACK parent_wnd_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static void test_selection(void)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static int font_height(HFONT hFont)
#define WS_OVERLAPPEDWINDOW
#define CBEM_GETCOMBOCONTROL
#define CBEM_GETEDITCONTROL
TW_UINT32 TW_UINT16 TW_UINT16 MSG
static BOOL load_v6_module(ULONG_PTR *pcookie, HANDLE *hCtx)
static void unload_v6_module(ULONG_PTR cookie, HANDLE hCtx)
#define expect_style(window, style)
DWORD WINAPI GetLastError(void)
HGDIOBJ WINAPI GetStockObject(_In_ int)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define OUT_DEFAULT_PRECIS
#define CLIP_DEFAULT_PRECIS
HFONT WINAPI CreateFontA(_In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_opt_ LPCSTR)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HWND WINAPI GetFocus(void)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define SetWindowLongPtrA
#define WM_CTLCOLORSTATIC
#define CB_SETDROPPEDWIDTH
BOOL WINAPI TranslateMessage(_In_ const MSG *)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
HANDLE WINAPI GetPropA(_In_ HWND, _In_ LPCSTR)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
#define CBS_NOINTEGRALHEIGHT
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_WINDOWPOSCHANGING
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
LONG WINAPI SetWindowLongA(_In_ HWND, _In_ int, _In_ LONG)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define GetWindowLongPtrA
#define WM_CTLCOLORSCROLLBAR
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
#define CB_GETDROPPEDWIDTH
#define CB_GETCOMBOBOXINFO
#define WM_CTLCOLORMSGBOX
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
#define CB_GETDROPPEDCONTROLRECT
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI GetComboBoxInfo(_In_ HWND, _Inout_ PCOMBOBOXINFO)
struct tagCOMBOBOXINFO COMBOBOXINFO
#define CB_GETDROPPEDSTATE
#define WM_CTLCOLORLISTBOX
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)