30#define EDITBOX_SEQ_INDEX 0
31#define NUM_MSG_SEQUENCES 1
36#define expect(expected, got) ok(got == expected, "Expected %d, got %d\n", expected, got)
38#define expect_rect(r, _left, _top, _right, _bottom) ok(r.left == _left && r.top == _top && \
39 r.bottom == _bottom && r.right == _right, "Invalid rect %s vs (%d,%d)-(%d,%d)\n", \
40 wine_dbgstr_rect(&r), _left, _top, _right, _bottom);
60 info->cbSize =
sizeof(*info);
72 memset(&cbexItem, 0x00,
sizeof(cbexItem));
82 memset(&cbexItem, 0x00,
sizeof(cbexItem));
106 static LONG defwndproc_counter = 0;
128 defwndproc_counter++;
130 defwndproc_counter--;
152 static const char *first_item =
"First Item",
153 *second_item =
"Second Item",
154 *third_item =
"Third Item",
155 *middle_item =
"Between First and Second Items",
156 *replacement_item =
"Between First and Second Items",
157 *out_of_range_item =
"Out of Range Item";
167 ok(
res == 0,
"Adding simple item failed (%d)\n",
res);
169 ok(
res == 1,
"Adding simple item failed (%d)\n",
res);
171 ok(
res == 2,
"Adding simple item failed (%d)\n",
res);
173 ok(
res == 1,
"Inserting simple item failed (%d)\n",
res);
177 ok(
res == -1,
"Adding using out of range index worked unexpectedly (%d)\n",
res);
179 ok(
res == -1,
"Adding using out of range index worked unexpectedly (%d)\n",
res);
187 ok(
res == 0,
"Getting item using out of range index worked unexpectedly (%d, %s)\n",
res, cbexItem.
pszText);
189 ok(
res == 0,
"Getting item using out of range index worked unexpectedly (%d, %s)\n",
res, cbexItem.
pszText);
191 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 valid index failed unexpectedly (%d)\n",
res);
196 ok(
strcmp(first_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
199 ok(
res != 0,
"Getting item using valid index failed unexpectedly (%d)\n",
res);
200 ok(
strcmp(middle_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
203 ok(
res != 0,
"Getting item using valid index failed unexpectedly (%d)\n",
res);
204 ok(
strcmp(second_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
207 ok(
res != 0,
"Getting item using valid index failed unexpectedly (%d)\n",
res);
208 ok(
strcmp(third_item, cbexItem.
pszText) == 0,
"Getting item returned wrong string (%s)\n", cbexItem.
pszText);
212 ok(
res == 0,
"Setting item using out of range index worked unexpectedly (%d)\n",
res);
214 ok(
res == 0,
"Setting item using out of range index worked unexpectedly (%d)\n",
res);
216 ok(
res == 0,
"Setting item using out of range index worked unexpectedly (%d)\n",
res);
220 ok(
res != 0,
"Setting first item failed (%d)\n",
res);
222 ok(
res != 0,
"Setting last item failed (%d)\n",
res);
226 ok(
res ==
CB_ERR,
"Deleting using out of range index worked unexpectedly (%d)\n",
res);
228 ok(
res ==
CB_ERR,
"Deleting using out of range index worked unexpectedly (%d)\n",
res);
232 ok(
res == 3,
"Deleting using out of range index failed (%d)\n",
res);
234 ok(
res == 2,
"Deleting using out of range index failed (%d)\n",
res);
236 ok(
res == 1,
"Deleting using out of range index failed (%d)\n",
res);
238 ok(
res == 0,
"Deleting using out of range index failed (%d)\n",
res);
242 ok(
res ==
CB_ERR,
"Deleting using out of range index worked unexpectedly (%d)\n",
res);
260 static const UINT choices[] = {8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72};
271 memset(&cbexItem, 0x00,
sizeof(cbexItem));
277 "Failed to add item %d\n",
i);
287 "Focus not on Main Window, instead on %p\n",
GetFocus());
293 ok(
result,
"WM_LBUTTONDOWN was not processed. LastError=%d\n",
297 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
300 "The dropdown list should have appeared after clicking the button.\n");
302 ok(
idx == 0,
"For TopIndex expected %d, got %d\n", 0,
idx);
305 ok(
result,
"WM_LBUTTONUP was not processed. LastError=%d\n",
309 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
316 y = item_height/2 + item_height*4;
318 ok(!
result,
"WM_MOUSEMOVE was not processed. LastError=%d\n",
322 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
326 ok(!
result,
"WM_LBUTTONDOWN was not processed. LastError=%d\n",
330 "Focus not on ComboBoxEx's ComboBox Control, instead on %p\n",
333 "The dropdown list should still be visible.\n");
336 ok(!
result,
"WM_LBUTTONUP was not processed. LastError=%d\n",
340 "Focus not on ComboBoxEx's Edit Control, instead on %p\n",
346 "The dropdown list should have been rolled up.\n");
350 "Current Selection: expected %d, got %d\n", 4,
idx);
379 ok(
ret != 0,
"CBEM_GETITEM failed\n");
383 ok(
ret == 0,
"Expected zero length\n");
386 ok(
ret == 0,
"Expected zero length\n");
390 ok(
ret == 0,
"Expected zero length\n");
391 ok(
buff[0] == 0,
"Expected null terminator as a string, got %s\n",
buff);
405 ok(hCombo !=
NULL,
"createComboEx failed\n");
407 ok(
ret,
"GetWindowRect failed\n");
408 combo_height =
rect.bottom -
rect.top;
409 ok(combo_height > 0,
"wrong combo height\n");
415 wp.
cy = combo_height * 2;
421 ok(
ret == 0,
"expected 0, got %x\n",
ret);
422 ok(wp.
cy == combo_height,
423 "Expected height %d, got %d\n", combo_height, wp.
cy);
429 wp.
cy = combo_height / 2;
435 ok(
ret == 0,
"expected 0, got %x\n",
ret);
436 ok(wp.
cy == combo_height,
437 "Expected height %d, got %d\n", combo_height, wp.
cy);
440 ok(
ret,
"DestroyWindow failed\n");
487#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
488#define X2(f, ord) p##f = (void*)GetProcAddress(hComCtl32, (const char *)ord);
510 hMainWnd =
CreateWindowA(
WC_STATICA,
"Test",
WS_OVERLAPPEDWINDOW, 10, 10, 300, 300,
NULL,
NULL,
NULL, 0);
545 ok(hCombo !=
NULL,
"Failed to get internal combo\n");
547 ok(
hEdit !=
NULL,
"Failed to get internal edit\n");
549 if (pSetWindowSubclass)
551 ok(
GetPropA(hCombo,
"CC32SubclassInfo") !=
NULL,
"Expected CC32SubclassInfo property\n");
567 char textA[] =
"test";
590 item.lParam = 0xdeadbeef;
593 ok(
item.lParam == 0,
"Expected zero, got %lx\n",
item.lParam);
595 item.lParam = 0x1abe11ed;
602 ok(
item.lParam == 0x1abe11ed,
"Expected 0x1abe11ed, got %lx\n",
item.lParam);
609 return CreateWindowA(
WC_COMBOBOXA,
"Combo",
WS_VISIBLE|
WS_CHILD|
style, 5, 5, 100, 100,
hMainWnd, (
HMENU)
COMBO_ID,
NULL, 0);
639 for (
i = 1;
i < 30;
i++)
643 ok((
r.bottom -
r.top) == (
i + 6),
"Unexpected client rect height.\n");
651 HFONT hFont1, hFont2;
657 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");
658 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");
695 ok(0,
"Expected Marlett font heights 10/8, got %d/%d\n",
699 for (
i = 1;
i < 30;
i++)
701 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");
706 ok((
r.bottom -
r.top) == (
height + 8),
"Unexpected client rect height.\n");
731 char list[20], edit[20];
735 memset(edit, 0,
sizeof(edit));
770 ok(
idx == -1,
"expected selection -1, got %d\n",
idx);
812 static const char *
const text[] = {
"alpha",
"beta",
"" };
813 static const int sel_1[] = { 2, 0, 1, 0, 1 };
814 static const int sel_2[] = { 0, 1, 0, 0, 1 };
823 INT ddheight, clheight, ddwidth, clwidth;
840 ok( rc.
right - rc.
left == clwidth - 2,
"clientrect width is %d vs %d\n",
842 ok( rc.
bottom - rc.
top == clheight,
"clientrect height is %d vs %d\n",
845 ok( rc.
right - rc.
left == clwidth - 2,
"drop-down rect width is %d vs %d\n",
847 ok( rc.
bottom - rc.
top == ddheight,
"drop-down rect height is %d vs %d\n",
849 ok( rc.
right - rc.
left == ddwidth -2,
"drop-down rect width is %d vs %d\n",
854 ok( rc.
right - rc.
left == clwidth + 2,
"clientrect width is %d vs %d\n",
856 ok( rc.
bottom - rc.
top == clheight,
"clientrect height is %d vs %d\n",
859 ok( rc.
right - rc.
left == clwidth + 2,
"drop-down rect width is %d vs %d\n",
862 ok( rc.
bottom - rc.
top == clheight + 2,
"drop-down rect height is %d vs %d\n",
867 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
869 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
872 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
874 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
877 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
879 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
882 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
884 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
887 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
889 ok( ddwidth == (clwidth << 1),
"drop-width is %d vs %d\n", ddwidth, clwidth << 1);
892 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
894 ok( ddwidth == clwidth + 2,
"drop-width is %d vs %d\n", ddwidth, clwidth + 2);
923 ok(
strcmp(edit,
"Jason1")==0,
"Unexpected text retrieved %s\n", edit);
927 ok(
start==0,
"Unexpected start position for selection %d\n",
start);
928 ok(
end==0,
"Unexpected end position for selection %d\n",
end);
936 ok(
start==0,
"Unexpected start position for selection %d\n",
start);
937 ok(
end==6,
"Unexpected end position for selection %d\n",
end);
946 ok(
strcmp(edit,
"A")==0,
"Unexpected text retrieved %s\n", edit);
968 ok(
strcmp(edit,
"Jason2")==0,
"Unexpected text retrieved %s\n", edit);
974 ok(
start==0,
"Unexpected start position for selection %d\n",
start);
975 ok(
end==6,
"Unexpected end position for selection %d\n",
end);
986 ok(
strcmp(edit,
"Jason2A")==0,
"Unexpected text retrieved %s\n", edit);
1028 static const char wine_test[] =
"Wine Test";
1055 ok(
GetFocus() == hButton,
"hButton should have keyboard focus\n");
1070 ok(
GetFocus() == hButton,
"hButton should have keyboard focus\n");
1103 ok(exstyle == expect_exstyle,
"%08x: got %08x\n", cb_style, exstyle);
1112 ok(exstyle == expect_exstyle,
"%08x: got %08x\n", cb_style, exstyle);
1118 ok(exstyle == expect_exstyle,
"%08x: got %08x\n", cb_style, exstyle);
1135 for (
i = 0;
i < 3;
i++)
1156 static const char wine_test[] =
"Wine Test";
1161 static const struct list_size_info
1174 const struct list_size_info *info_test = &info_height[
test];
1177 int expected_height_list;
1178 RECT rect_list_client;
1179 int min_visible_expected;
1185 ok(min_visible_expected == 30,
"Unexpected number of items %d.\n", min_visible_expected);
1189 ok(
ret,
"Failed to get combo info, %d\n",
ret);
1191 hList = cbInfo.hwndList;
1192 for (
i = 0;
i < info_test->num_items;
i++)
1195 ok(
ret ==
i,
"Failed to add string %d, returned %d.\n",
i,
ret);
1198 if (info_test->limit != -1)
1200 int min_visible_actual;
1201 min_visible_expected = info_test->limit;
1204 ok(
ret,
"Failed to set visible limit.\n");
1206 ok(min_visible_expected == min_visible_actual,
"test %d: unexpected number of items %d.\n",
1207 test, min_visible_actual);
1211 ok(
ret,
"Failed to show dropdown.\n");
1213 ok(
ret,
"Unexpected dropped state.\n");
1216 height_list = rect_list_client.
bottom - rect_list_client.
top;
1221 RECT rect_list_complete;
1222 int list_height_nonclient;
1223 int list_height_calculated;
1224 int edit_padding_size = cbInfo.rcItem.
top;
1229 list_height_nonclient = (rect_list_complete.
bottom - rect_list_complete.
top)
1230 - (rect_list_client.
bottom - rect_list_client.
top);
1233 list_height_calculated = info_test->height_combo
1234 - (cbInfo.rcItem.bottom - cbInfo.rcItem.top)
1235 - list_height_nonclient
1236 - edit_padding_size * 2;
1238 expected_height_list =
min(list_height_calculated, height_item * info_test->num_items);
1239 if (expected_height_list < 0)
1240 expected_height_list = 0;
1242 ok(expected_height_list == height_list,
"Test %d, expected list height to be %d, got %d\n",
1243 test, expected_height_list, height_list);
1247 expected_height_list =
min(info_test->num_items, min_visible_expected) * height_item;
1249 ok(expected_height_list == height_list,
"Test %d, expected list height to be %d, got %d\n",
1250 test, expected_height_list, height_list);
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 void test_combo_changesize(DWORD style)
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 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 int font_height(HFONT hFont)
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
#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)
BOOL WINAPI DeleteDC(_In_ HDC)
HWND WINAPI GetFocus(void)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define SetWindowLongPtrA
#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,...)
__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
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
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
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)