29#define DEFINE_EXPECT(func) \
30 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
32#define SET_EXPECT(func) \
33 do { called_ ## func = FALSE; expect_ ## func = TRUE; } while(0)
35#define CHECK_EXPECT2(func) \
37 ok(expect_ ##func, "unexpected call " #func "\n"); \
38 called_ ## func = TRUE; \
41#define CHECK_EXPECT(func) \
43 CHECK_EXPECT2(func); \
44 expect_ ## func = FALSE; \
47#define CHECK_CALLED(func) \
49 ok(called_ ## func, "expected " #func "\n"); \
50 expect_ ## func = called_ ## func = FALSE; \
63 pGetProcessHandleFromHwnd = (
void*)
GetProcAddress(oleacc,
"GetProcessHandleFromHwnd");
64 if(!pGetProcessHandleFromHwnd) {
65 win_skip(
"GetProcessHandleFromHwnd not available\n");
97 ok(0,
"unexpected call\n");
104 ok(0,
"unexpected call\n");
111 ok(0,
"unexpected call\n");
117 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
119 ok(0,
"unexpected call\n");
126 ok(0,
"unexpected call\n");
142 ok(
V_VT(&varChildID) ==
VT_I4,
"V_VT(&varChildID) = %d\n",
V_VT(&varChildID));
143 ok(
V_I4(&varChildID) == 1,
"V_I4(&varChildID) = %d\n",
V_I4(&varChildID));
152 ok(0,
"unexpected call\n");
159 ok(0,
"unexpected call\n");
166 ok(0,
"unexpected call\n");
173 ok(0,
"unexpected call\n");
180 ok(0,
"unexpected call\n");
187 ok(0,
"unexpected call\n");
194 ok(0,
"unexpected call\n");
201 ok(0,
"unexpected call\n");
207 ok(0,
"unexpected call\n");
214 ok(0,
"unexpected call\n");
221 ok(0,
"unexpected call\n");
228 ok(0,
"unexpected call\n");
235 ok(0,
"unexpected call\n");
242 ok(0,
"unexpected call\n");
249 ok(0,
"unexpected call\n");
256 ok(0,
"unexpected call\n");
263 ok(0,
"unexpected call\n");
270 ok(0,
"unexpected call\n");
311 WCHAR bufW[2], *buffW;
315 ok(
ret == 0,
"GetRoleTextA doesn't return zero on wrong role number, got %d\n",
ret);
318 ok(
ret == 0,
"GetRoleTextA doesn't return zero on wrong role number, got %d\n",
ret);
319 ok(
buf[0] == 0,
"GetRoleTextA doesn't return NULL char on wrong role number\n");
322 ok(
ret == 0,
"GetRoleTextA doesn't return zero on wrong role number, got %d\n",
ret);
323 ok(
buf[0] ==
'*',
"GetRoleTextA modified buffer on wrong role number\n");
326 ok(
ret == 0,
"GetRoleTextW doesn't return zero on wrong role number, got %d\n",
ret);
329 ok(
ret == 0,
"GetRoleTextW doesn't return zero on wrong role number, got %d\n",
ret);
330 ok(bufW[0] ==
'\0',
"GetRoleTextW doesn't return NULL char on wrong role number\n");
333 ok(
ret == 0,
"GetRoleTextW doesn't return zero on wrong role number, got %d\n",
ret);
337 ok(
ret > 0,
"GetRoleTextA doesn't return (>0) for zero role number, got %d\n",
ret);
339 ok(
ret > 0,
"GetRoleTextW doesn't return (>0) for zero role number, got %d\n",
ret);
343 ok(
ret > 0,
"GetRoleTextA doesn't return length on NULL buffer, got %d\n",
ret);
345 ok(
ret > 0,
"GetRoleTextA doesn't return length on NULL buffer, got %d\n",
ret);
347 ok(
ret > 0,
"GetRoleTextW doesn't return length on NULL buffer, got %d\n",
ret);
349 ok(
ret > 0,
"GetRoleTextW doesn't return length on NULL buffer, got %d\n",
ret);
354 ok(!
ret,
"GetRoleTextA doesn't return 0, got %d\n",
ret);
355 ok(
buf[0] ==
'*',
"GetRoleTextA modified buffer\n");
358 ok(
ret,
"GetRoleTextW doesn't return length\n");
359 ok(buffW !=
NULL,
"GetRoleTextW doesn't modify buffer\n");
362 ok(
ret == 0,
"GetRoleTextA returned wrong length\n");
363 ok(
buf[0] ==
'\0',
"GetRoleTextA returned not zero-length buffer\n");
366 ok(!
ret,
"GetRoleTextA returned wrong length, got %d, expected 0\n",
ret);
368 "GetRoleTextA returned not zero-length buffer : (%c)\n",
buf[0]);
372 ok(
ret == 0,
"GetRoleTextW returned wrong length, got %d, expected 1\n",
ret);
373 ok(bufW[0] ==
'\0',
"GetRoleTextW returned not zero-length buffer\n");
376 ok(
ret == 1,
"GetRoleTextW returned wrong length, got %d, expected 1\n",
ret);
377 ok(bufW[1] ==
'\0',
"GetRoleTextW returned not zero-length buffer\n");
384 ok(
buff[2*
ret-1] ==
'*',
"GetRoleTextA shouldn't modify this part of buffer\n");
389 buffW[2*
ret-1] =
'*';
391 ok(buffW[2*
ret-1] ==
'*',
"GetRoleTextW shouldn't modify this part of buffer\n");
395 for(role = 0; role <= ROLE_SYSTEM_OUTLINEBUTTON; role++){
400 memset(buff2, 0,
sizeof(buff2));
403 ok(
ret > 0,
"Expected the role to be present\n");
407 "GetRoleTextA: returned length doesn't match returned buffer for role %d\n", role);
410 memset(buff2W, 0,
sizeof(buff2W));
415 "GetRoleTextW: returned length doesn't match returned buffer for role %d\n", role);
428 ok(ret2,
"GetStateText failed\n");
432 ok(
ret == ret2,
"got %d, expected %d\n",
ret, ret2);
433 ok(
ptr !=
NULL,
"ptr was not changed\n");
436 ok(
ret == ret2,
"got %d, expected %d\n",
ret, ret2);
441 ok(!
ret,
"got %d, expected 0\n",
ret);
442 ok(!
buf[0],
"buf[0] = '%c'\n",
buf[0]);
444 for(
i=0;
i<31;
i++) {
446 ok(
ret,
"%d) GetStateText failed\n",
i);
449 ok(!
ret,
"31) GetStateText succeeded: %d\n",
ret);
452 ok(
ret,
"GetStateText failed\n");
454 ok(ret2,
"GetStateText failed\n");
455 ok(
ret == ret2,
"got %d, expected %d\n", ret2,
ret);
457 "GetStateText(2,...) returned different data than GetStateText(3,...)\n");
460 ok(ret2,
"GetStateText failed\n");
468 ok(
ret == ret2,
"got %d, expected %d\n",
ret, ret2);
471 ok(
ret == ret2,
"got %d, expected %d\n",
ret, ret2);
474 ok(!
ret,
"got %d, expected 0\n",
ret);
475 ok(!bufa[0],
"bufa[0] = '%c'\n", bufa[0]);
477 for(
i=0;
i<31;
i++) {
479 ok(
ret,
"%d) GetStateText failed\n",
i);
482 ok(!
ret,
"31) GetStateText succeeded: %d\n",
ret);
490 IUnknown_AddRef(iface);
538 ok(unk == &
Object,
"unk != &Object\n");
539 IUnknown_Release(unk);
558 if(
lparam == OBJID_QUERYCLASSNAMEIDX) {
571 ok(0,
"unexpected (%ld)\n",
lparam);
582 memset(&cls, 0,
sizeof(cls));
606 if(
hr ==
S_OK) IUnknown_Release(unk);
619 IUnknown_Release(unk);
629 proc = pGetProcessHandleFromHwnd(
NULL);
632 hwnd =
CreateWindowA(
"static",
"", 0, 0, 0, 0, 0,
NULL,
NULL,
NULL,
NULL);
635 proc = pGetProcessHandleFromHwnd(
hwnd);
663 ok(
hr ==
S_OK,
"AccessibleChildren returned %x\n",
hr);
675 ok(
hr ==
S_OK,
"AccessibleChildren returned %x\n",
hr);
682 memset(children, 0xfe,
sizeof(children));
690 ok(
hr ==
S_OK,
"AccessibleChildren returned %x\n",
hr);
697 ok(
V_I4(children) == 1,
"V_I4(children) = %d\n",
V_I4(children));
717 ok(
V_I4(children) == 1,
"V_I4(children) = %d\n",
V_I4(children));
729 static const WCHAR testW[] = {
't',
'e',
's',
't',
' ',
't',
' ',
'&',
'j',
'u',
'n',
'k',0};
730 static const WCHAR shortcutW[] = {
'A',
'l',
't',
'+',
't',0};
750 ok(chld !=
NULL,
"CreateWindow failed\n");
760 hr = IOleWindow_GetWindow(ow, &hwnd2);
762 ok(
hwnd == hwnd2,
"hwnd2 = %p, expected %p\n", hwnd2,
hwnd);
765 ok(
hwnd == hwnd2,
"hwnd2 = %p, expected %p\n", hwnd2,
hwnd);
766 IOleWindow_Release(ow);
768 hr = IAccessible_get_accChildCount(acc, &
l);
770 ok(
l == 1,
"l = %d\n",
l);
774 disp = (
void*)0xdeadbeef;
775 hr = IAccessible_get_accChild(acc, vid, &disp);
777 ok(disp ==
NULL,
"disp = %p\n", disp);
780 disp = (
void*)0xdeadbeef;
781 hr = IAccessible_get_accChild(acc, vid, &disp);
783 ok(disp ==
NULL,
"disp = %p\n", disp);
785 hr = IAccessible_QueryInterface(acc, &IID_IEnumVARIANT, (
void**)&ev);
788 hr = IEnumVARIANT_Skip(ev, 100);
793 hr = IEnumVARIANT_Next(ev, 1, &
v, &fetched);
796 ok(fetched == 0,
"fetched = %d\n", fetched);
798 hr = IEnumVARIANT_Reset(ev);
803 hr = IEnumVARIANT_Next(ev, 1, &
v, &fetched);
807 ok(fetched == 1,
"fetched = %d\n", fetched);
808 IEnumVARIANT_Release(ev);
814 hr = IAccessible_get_accName(acc, vid, &
str);
820 str = (
void*)0xdeadbeef;
821 hr = IAccessible_get_accName(acc, vid, &
str);
823 ok(!
str,
"str != NULL\n");
826 str = (
void*)0xdeadbeef;
827 hr = IAccessible_get_accValue(acc, vid, &
str);
829 ok(!
str,
"str != NULL\n");
831 str = (
void*)0xdeadbeef;
832 hr = IAccessible_get_accDescription(acc, vid, &
str);
834 ok(!
str,
"str != NULL\n");
838 hr = IAccessible_get_accRole(acc, vid, &
v);
841 ok(
V_I4(&
v) == ROLE_SYSTEM_CLIENT,
"V_I4(&v) = %d\n",
V_I4(&
v));
845 hr = IAccessible_get_accState(acc, vid, &
v);
849 "V_I4(&v) = %x\n",
V_I4(&
v));
851 str = (
void*)0xdeadbeef;
852 hr = IAccessible_get_accHelp(acc, vid, &
str);
854 ok(!
str,
"str != NULL\n");
856 hr = IAccessible_get_accKeyboardShortcut(acc, vid, &
str);
861 str = (
void*)0xdeadbeef;
862 hr = IAccessible_get_accDefaultAction(acc, vid, &
str);
864 ok(!
str,
"str != NULL\n");
868 hr = IAccessible_accHitTest(acc,
pt.x,
pt.y, &
v);
875 hr = IAccessible_accHitTest(acc,
pt.x,
pt.y, &
v);
883 hr = IAccessible_accHitTest(acc,
pt.x,
pt.y, &
v);
890 hr = IAccessible_accHitTest(acc,
pt.x,
pt.y, &
v);
899 hr = IAccessible_accHitTest(acc,
pt.x,
pt.y, &
v);
904 hr = IAccessible_get_accParent(acc, &disp);
906 ok(disp !=
NULL,
"disp == NULL\n");
907 IDispatch_Release(disp);
927 hr = IAccessible_get_accChildCount(acc, &
l);
929 ok(
l == 0,
"l = %d\n",
l);
931 hr = IAccessible_get_accName(acc, vid, &
str);
934 hr = IAccessible_get_accValue(acc, vid, &
str);
937 hr = IAccessible_get_accRole(acc, vid, &
v);
940 ok(
V_I4(&
v) == ROLE_SYSTEM_CLIENT,
"V_I4(&v) = %d\n",
V_I4(&
v));
942 hr = IAccessible_get_accState(acc, vid, &
v);
947 hr = IAccessible_accHitTest(acc, 200, 200, &
v);
952 disp = (
void*)0xdeadbeef;
953 hr = IAccessible_get_accParent(acc, &disp);
955 ok(disp ==
NULL,
"disp = %p\n", disp);
964 IAccessible_Release(acc);
973 &IID_IAccPropServices, (
void**)&acc_prop_services);
974 ok(
hres ==
S_OK,
"Could not create CAccPropServices instance: %08x\n",
hres);
976 IAccPropServices_Release(acc_prop_services);
998 IUnknown_Release(unk);
1005 skip(
"can't register test window class\n");
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static void startup(void)
#define InterlockedIncrement
#define InterlockedDecrement
const char * wine_dbgstr_wn(const WCHAR *str, int n)
#define GetProcAddress(x, y)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
#define HeapFree(x, y, z)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
LRESULT WINAPI LresultFromObject(REFIID riid, WPARAM wParam, LPUNKNOWN pAcc)
HRESULT WINAPI AccessibleObjectFromWindow(HWND hwnd, DWORD dwObjectID, REFIID riid, void **ppvObject)
HRESULT WINAPI ObjectFromLresult(LRESULT result, REFIID riid, WPARAM wParam, void **ppObject)
UINT WINAPI GetStateTextW(DWORD state_bit, WCHAR *state_str, UINT state_str_len)
UINT WINAPI GetStateTextA(DWORD state_bit, CHAR *state_str, UINT state_str_len)
HRESULT WINAPI AccessibleChildren(IAccessible *container, LONG start, LONG count, VARIANT *children, LONG *children_cnt)
UINT WINAPI GetRoleTextA(DWORD role, LPSTR lpRole, UINT rolemax)
HRESULT WINAPI WindowFromAccessibleObject(IAccessible *acc, HWND *phwnd)
HRESULT WINAPI CreateStdAccessibleObject(HWND hwnd, LONG idObject, REFIID riidInterface, void **ppvObject)
UINT WINAPI GetRoleTextW(DWORD role, LPWSTR lpRole, UINT rolemax)
static unsigned char buff[32768]
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLdouble GLdouble GLdouble GLdouble top
GLenum GLuint GLenum GLsizei const GLchar * buf
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
static const WCHAR testW[]
int WINAPI lstrlenA(LPCSTR lpString)
#define sprintf(buf, format,...)
static void test_GetProcessHandleFromHwnd(void)
static HRESULT WINAPI Accessible_accHitTest(IAccessible *iface, LONG xLeft, LONG yTop, VARIANT *pvarID)
static LRESULT WINAPI test_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static HRESULT WINAPI Accessible_get_accParent(IAccessible *iface, IDispatch **ppdispParent)
static ULONG WINAPI Object_AddRef(IUnknown *iface)
static void test_LresultFromObject(const char *name)
static HRESULT WINAPI Accessible_get_accChildCount(IAccessible *iface, LONG *pcountChildren)
static HRESULT WINAPI Accessible_accLocation(IAccessible *iface, LONG *pxLeft, LONG *pyTop, LONG *pcxWidth, LONG *pcyHeight, VARIANT varID)
static BOOL register_window_class(void)
#define CHECK_EXPECT(func)
static HRESULT WINAPI Accessible_get_accRole(IAccessible *iface, VARIANT varID, VARIANT *pvarRole)
#define DEFINE_EXPECT(func)
static ULONG WINAPI Object_Release(IUnknown *iface)
static HRESULT WINAPI Accessible_get_accState(IAccessible *iface, VARIANT varID, VARIANT *pvarState)
static HRESULT WINAPI Accessible_put_accName(IAccessible *iface, VARIANT varID, BSTR pszName)
static HRESULT WINAPI Accessible_get_accHelpTopic(IAccessible *iface, BSTR *pszHelpFile, VARIANT varID, LONG *pidTopic)
static HRESULT WINAPI Accessible_get_accValue(IAccessible *iface, VARIANT varID, BSTR *pszValue)
static ULONG WINAPI Accessible_Release(IAccessible *iface)
static HRESULT WINAPI Accessible_get_accKeyboardShortcut(IAccessible *iface, VARIANT varID, BSTR *pszKeyboardShortcut)
static HRESULT WINAPI Accessible_GetIDsOfNames(IAccessible *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static HRESULT WINAPI Accessible_put_accValue(IAccessible *iface, VARIANT varID, BSTR pszValue)
static IAccessibleVtbl AccessibleVtbl
static void test_CAccPropServices(void)
static HRESULT WINAPI Accessible_get_accFocus(IAccessible *iface, VARIANT *pvarID)
static HRESULT WINAPI Accessible_get_accName(IAccessible *iface, VARIANT varID, BSTR *pszName)
static ULONG WINAPI Accessible_AddRef(IAccessible *iface)
static IUnknownVtbl ObjectVtbl
static HRESULT WINAPI Object_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static HRESULT WINAPI Accessible_GetTypeInfoCount(IAccessible *iface, UINT *pctinfo)
static IAccessible Accessible
static void test_default_client_accessible_object(void)
static HRESULT WINAPI Accessible_get_accChild(IAccessible *iface, VARIANT varChildID, IDispatch **ppdispChild)
static HRESULT WINAPI Accessible_GetTypeInfo(IAccessible *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static HRESULT WINAPI Accessible_QueryInterface(IAccessible *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI Accessible_accNavigate(IAccessible *iface, LONG navDir, VARIANT varStart, VARIANT *pvarEnd)
static void test_getroletext(void)
static HRESULT WINAPI Accessible_get_accHelp(IAccessible *iface, VARIANT varID, BSTR *pszHelp)
static HRESULT WINAPI Accessible_get_accDescription(IAccessible *iface, VARIANT varID, BSTR *pszDescription)
#define CHECK_CALLED(func)
static HRESULT WINAPI Accessible_get_accSelection(IAccessible *iface, VARIANT *pvarID)
static HRESULT WINAPI Accessible_get_accDefaultAction(IAccessible *iface, VARIANT varID, BSTR *pszDefaultAction)
static void test_AccessibleObjectFromWindow(void)
static HRESULT WINAPI Accessible_accSelect(IAccessible *iface, LONG flagsSelect, VARIANT varID)
static void test_AccessibleChildren(IAccessible *acc)
static HRESULT WINAPI Accessible_accDoDefaultAction(IAccessible *iface, VARIANT varID)
static void unregister_window_class(void)
static void test_GetStateText(void)
static HRESULT WINAPI Accessible_Invoke(IAccessible *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static VARIANTARG static DISPID
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
const GUID IID_IOleWindow
#define WS_OVERLAPPEDWINDOW
#define IsEqualIID(riid1, riid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
int winetest_get_mainargs(char ***pargv)
void winetest_wait_child_process(HANDLE process)
__int64 _strtoi64(const char *nptr, char **endptr, int base)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ DWORD _Out_ _In_ WORD wFlags
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
#define STATE_SYSTEM_FOCUSABLE
#define STATE_SYSTEM_INVISIBLE
BOOL WINAPI DestroyWindow(_In_ HWND)