33#include "wine/unicode.h"
73#define WCBE_ACTEDIT 0x00000001
77#define WCBE_EDITCHG 0x00000002
78#define WCBE_EDITHASCHANGED (WCBE_ACTEDIT | WCBE_EDITCHG)
79#define WCBE_EDITFOCUSED 0x00000004
80#define WCBE_MOUSECAPTURED 0x00000008
81#define WCBE_MOUSEDRAGGED 0x00000010
83#define ID_CB_EDIT 1001
96#define ODS_COMBOEXLBOX 0x4000
107#define CBE_STARTOFFSET 6
112#define COMBO_SUBCLASSID 1
113#define EDIT_SUBCLASSID 2
115#define COMBOEX_GetInfoPtr(hwnd) ((COMBOEX_INFO *)GetWindowLongPtrW (hwnd, 0))
142 TRACE(
"item %p - mask=%08x, pszText=%p, cchTM=%d, iImage=%d\n",
144 TRACE(
"item %p - iSelectedImage=%d, iOverlay=%d, iIndent=%d, lParam=%08lx\n",
153 TRACE(
"input - mask=%08x, iItem=%ld, pszText=%p, cchTM=%d, iImage=%d\n",
158 TRACE(
"input - iSelectedImage=%d, iOverlay=%d, iIndent=%d, lParam=%08lx\n",
213 if (astr &&
hdr->ceItem.pszText == (
LPWSTR)astr)
214 hdr->ceItem.pszText = wstr;
277 moving = infoPtr->
items;
280 while (moving && (moving !=
item)) {
281 moving = moving->
next;
284 if (!moving || (
index < 0)) {
285 ERR(
"COMBOBOXEX item structures broken. Please report!\n");
299 return item->pszText;
341 TRACE(
"selected font hwnd=%p, height=%d\n", nfont,
size->cy);
395 TRACE(
"Combo font x=%d, y=%d\n", mysize.
cx, mysize.
cy);
401 TRACE(
"Combo client (%s), setting Edit to (%d,%d)-(%d,%d)\n",
418 TRACE(
"upgraded height due to image: height=%d\n",
cy);
424 RECT comboRect, ourRect;
456 return &infoPtr->
edit;
466 ERR(
"COMBOBOXEX item structures broken. Please report!\n");
617 while ((
i >
index) && moving) {
618 moving = moving->
next;
622 ERR(
"COMBOBOXEX item structures broken. Please report!\n");
638 if (!
item->pszText) {
684 if (!wstr)
return -1;
719 TRACE(
"EX_NOEDITIMAGE state changed to %d\n",
808 if (!wstr)
return FALSE;
824 TRACE(
"to %s, was %s\n",
value ?
"TRUE":
"FALSE", bTemp ?
"TRUE":
"FALSE");
866 ERR(
"data structures damaged!\n");
873 TRACE(
"non-valid result from combo, returning 0x%08lx\n",
ret);
905 ERR(
"data structures damaged!\n");
910 TRACE(
"setting lparam to 0x%08lx\n",
data);
913 TRACE(
"non-valid result from combo %p\n",
item1);
920 RECT cb_wrect, cbx_wrect, cbx_crect;
935 TRACE(
"EX window=(%s), client=(%s)\n",
937 TRACE(
"CB window=(%s), EX setting=(0,0)-(%d,%d)\n",
960 if (!infoPtr)
return -1;
973 WARN(
"wrong response to WM_NOTIFYFORMAT (%d), assuming ANSI\n",
i);
984 TRACE(
"EX window=(%s), client=(%s)\n",
1030 if (!infoPtr->
font) {
1051 TRACE(
"EX window=(%s) client=(%s) CB wnd=(%s)\n",
1103 for (cursel = 0; cursel <
n; cursel++){
1109 TRACE(
"failed to find match??? item=%p cursel=%d\n",
1118 TRACE(
"failed to find match??? item=%p cursel=%d\n",
1126 oldflags = infoPtr->
flags;
1163 ERR(
"item %ld not found. Problem!\n", oldItem);
1218 TRACE(
"CtlType=%08x, CtlID=%08x, itemID=%08x, hwnd=%p, data=%08lx\n",
1223 olditem = infoPtr->
items;
1239 ERR(
"COMBOBOXEX item structures broken. Please report!\n");
1242 olditem =
item->next;
1269 int drawimage, drawstate, xioff,
selected;
1271 TRACE(
"DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
1273 TRACE(
"itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n",
1275 TRACE(
"hWnd=%p hDC=%p (%s) itemData=0x%08lx\n",
1289 if (dis->
itemID == 0xffffffff) {
1293 TRACE(
"drawing item -1 special focus, rect=(%s)\n",
1301 RECT exrc, cbrc, edrc;
1304 SetRect(&edrc, -1, -1, -1, -1);
1306 TRACE(
"window rects ex=(%s), cb=(%s), ed=(%s)\n",
1312 ERR(
"NOT drawing item -1 special focus, rect=(%s), action=%08x, state=%08x\n",
1320 if (dis->
itemID == 0xffffffff) {
1326 item->mask &= ~CBEIF_TEXT;
1333 TRACE(
"edit control hwndEdit=%p, text len=%d str=%s\n",
1344 ERR(
"invalid item for id %d\n", dis->
itemID);
1373 drawimage =
item->iImage;
1375 drawimage =
item->iSelectedImage;
1411 int overlay =
item->iOverlay;
1441 if (drawimage >= 0 &&
1460 TRACE(
"drawing item %d text, rect=(%s)\n",
1470 rect.left = xbase + xioff - 1;
1552 TRACE(
"adjusted height hwnd=%p, height=%d\n",
1562 DWORD oldstyle, newstyle;
1566 if (newstyle != oldstyle) {
1567 TRACE(
"req style %08x, resetting style %08x\n",
1568 oldstyle, newstyle);
1617 RECT cbx_wrect, cbx_crect, cb_wrect;
1629 TRACE(
"winpos=(%d,%d %dx%d) flags=0x%08x\n",
1631 TRACE(
"EX window=(%s), client=(%s)\n",
1633 TRACE(
"CB window=(%s), EX setting=(0,0)-(%d,%d)\n",
1662 WCHAR edit_text[260];
1668 TRACE(
"hwnd=%p msg=%x wparam=%lx lParam=%lx, info_ptr=%p\n",
1702 TRACE(
"special code for VK_ESCAPE\n");
1716 ERR(
"item %ld not found. Problem!\n", oldItem);
1726 TRACE(
"special code for VK_RETURN\n");
1737 TRACE(
"handling VK_RETURN, selected = %ld, selected_text=%s\n",
1739 TRACE(
"handling VK_RETURN, edittext=%s\n",
1752 TRACE(
"Notify requested abort of change\n");
1759 if (oldItem != -1) {
1773 if (oldItem >= 0 && oldItem + step >= 0)
1793 infoPtr->
flags &= ~WCBE_EDITFOCUSED;
1825 WCHAR edit_text[260];
1827 TRACE(
"hwnd=%p msg=%x wparam=%lx lParam=%lx, info_ptr=%p\n",
1889 infoPtr->
flags &= ~WCBE_MOUSECAPTURED;
1891 infoPtr->
flags &= ~WCBE_MOUSEDRAGGED;
1941 infoPtr->
flags &= ~WCBE_EDITCHG;
1963 TRACE(
"handling EN_CHANGE, selected = %ld, selected_text=%s\n",
1965 TRACE(
"handling EN_CHANGE, edittext=%s\n",
1969 if (cmptext (lastwrk, edit_text)) {
2137 case WM_NOTIFYFORMAT:
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
static BOOL COMBOEX_SetItemA(COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA const *cit)
static LRESULT COMBOEX_Command(COMBOEX_INFO *infoPtr, WPARAM wParam)
static INT COMBOEX_FindStringExact(const COMBOEX_INFO *infoPtr, INT start, LPCWSTR str)
static BOOL COMBOEX_SetItemW(COMBOEX_INFO *infoPtr, const COMBOBOXEXITEMW *cit)
static LRESULT COMBOEX_MeasureItem(COMBOEX_INFO const *infoPtr, MEASUREITEMSTRUCT *mis)
static INT COMBOEX_SetItemHeight(COMBOEX_INFO const *infoPtr, INT index, UINT height)
static LRESULT COMBOEX_SetFont(COMBOEX_INFO *infoPtr, HFONT font, BOOL redraw)
static void COMBOEX_GetComboFontSize(const COMBOEX_INFO *infoPtr, SIZE *size)
static void COMBOEX_CopyItem(const CBE_ITEMDATA *item, COMBOBOXEXITEMW *cit)
static LPCSTR debugstr_txt(LPCWSTR str)
static BOOL COMBOEX_HasEditChanged(COMBOEX_INFO const *infoPtr)
static INT COMBOEX_InsertItemW(COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW const *cit)
static BOOL is_textW(LPCWSTR str)
static DWORD COMBOEX_SetExtendedStyle(COMBOEX_INFO *infoPtr, DWORD mask, DWORD style)
static BOOL COMBOEX_GetItemW(COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit)
struct _CBE_ITEMDATA CBE_ITEMDATA
static void COMBOEX_DumpItem(CBE_ITEMDATA const *item)
static LRESULT COMBOEX_NCCreate(HWND hwnd)
#define COMBOEX_GetInfoPtr(hwnd)
static CBE_ITEMDATA * COMBOEX_FindItem(COMBOEX_INFO *infoPtr, INT_PTR index)
static INT COMBOEX_GetIndex(COMBOEX_INFO const *infoPtr, CBE_ITEMDATA const *item)
static INT COMBOEX_Notify(const COMBOEX_INFO *infoPtr, INT code, NMHDR *hdr)
INT(WINAPI * cmp_func_t)(LPCWSTR, LPCWSTR)
static INT COMBOEX_InsertItemA(COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA const *cit)
static LRESULT WINAPI COMBOEX_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void COMBOEX_NotifyDragBegin(const COMBOEX_INFO *infoPtr, LPCWSTR wstr)
static LRESULT COMBOEX_SetRedraw(const COMBOEX_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
#define WCBE_MOUSECAPTURED
static void COMBOEX_DumpInput(COMBOBOXEXITEMW const *input)
static INT COMBOEX_NotifyEndEdit(const COMBOEX_INFO *infoPtr, NMCBEENDEDITW *neew, LPCWSTR wstr)
static LRESULT COMBOEX_WindowPosChanging(const COMBOEX_INFO *infoPtr, WINDOWPOS *wp)
static LRESULT COMBOEX_Enable(COMBOEX_INFO *infoPtr, BOOL enable)
static DWORD_PTR COMBOEX_SetItemData(COMBOEX_INFO *infoPtr, INT_PTR index, DWORD_PTR data)
static UINT COMBOEX_GetListboxText(COMBOEX_INFO *infoPtr, INT_PTR n, LPWSTR buf)
static LRESULT COMBOEX_Create(HWND hwnd, CREATESTRUCTA const *cs)
static INT COMBOEX_SetCursel(COMBOEX_INFO *infoPtr, INT_PTR index)
static BOOL is_textA(LPCSTR str)
static void COMBOEX_ReSize(const COMBOEX_INFO *infoPtr)
void COMBOEX_Unregister(void)
static LRESULT COMBOEX_NotifyFormat(COMBOEX_INFO *infoPtr, LPARAM lParam)
static LRESULT CALLBACK COMBOEX_ComboWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uId, DWORD_PTR ref_data)
static DWORD_PTR COMBOEX_GetItemData(COMBOEX_INFO *infoPtr, INT_PTR index)
void COMBOEX_Register(void)
static BOOL COMBOEX_SetUnicodeFormat(COMBOEX_INFO *infoPtr, BOOL value)
static void COMBOEX_ResetContent(COMBOEX_INFO *infoPtr)
static LRESULT CALLBACK COMBOEX_EditWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uId, DWORD_PTR ref_data)
static INT COMBOEX_NotifyItem(const COMBOEX_INFO *infoPtr, UINT code, NMCOMBOBOXEXW *hdr)
static BOOL COMBOEX_WM_DeleteItem(COMBOEX_INFO *infoPtr, DELETEITEMSTRUCT const *dis)
static HIMAGELIST COMBOEX_SetImageList(COMBOEX_INFO *infoPtr, HIMAGELIST himl)
#define WCBE_EDITHASCHANGED
static void COMBOEX_SetEditText(const COMBOEX_INFO *infoPtr, CBE_ITEMDATA *item)
static LRESULT COMBOEX_Destroy(COMBOEX_INFO *infoPtr)
static INT COMBOEX_DeleteItem(COMBOEX_INFO *infoPtr, INT_PTR index)
static BOOL COMBOEX_GetItemA(COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA *cit)
#define WCBE_MOUSEDRAGGED
static cmp_func_t get_cmp_func(COMBOEX_INFO const *infoPtr)
static LRESULT COMBOEX_DrawItem(COMBOEX_INFO *infoPtr, DRAWITEMSTRUCT const *dis)
static CBE_ITEMDATA * get_item_data(const COMBOEX_INFO *infoPtr, INT index)
static LPCWSTR COMBOEX_GetText(const COMBOEX_INFO *infoPtr, CBE_ITEMDATA *item)
static void COMBOEX_FreeText(CBE_ITEMDATA *item)
static void COMBOEX_AdjustEditPos(const COMBOEX_INFO *infoPtr)
static LRESULT COMBOEX_Size(COMBOEX_INFO *infoPtr, INT width, INT height)
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
LRESULT WINAPI SetPathWordBreakProc(HWND hwnd, BOOL bSet)
VOID COMCTL32_RefreshSysColors(void) DECLSPEC_HIDDEN
COMCTL32_SysColor comctl32_color
BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIDSubclass, DWORD_PTR dwRef)
BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uID)
LRESULT WINAPI DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static char selected[MAX_PATH+1]
BOOL WINAPI ImageList_Draw(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, UINT fStyle)
BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl, INT iImage, INT iOverlay)
BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST himl, INT i, IMAGEINFO *pImageInfo)
static const WCHAR indent[]
#define WideCharToMultiByte
#define MultiByteToWideChar
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLenum input
GLubyte GLubyte GLubyte GLubyte w
GLfloat GLfloat GLfloat GLfloat h
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
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
#define CBEM_GETUNICODEFORMAT
_Out_opt_ int _Out_opt_ int * cy
#define CBES_EX_NOEDITIMAGE
#define CBEM_HASEDITCHANGED
#define LPSTR_TEXTCALLBACKW
#define CBEM_GETIMAGELIST
#define LPSTR_TEXTCALLBACKA
#define CBEIF_SELECTEDIMAGE
#define CBEM_GETCOMBOCONTROL
#define CBEN_GETDISPINFOA
#define CBEM_SETEXTENDEDSTYLE
#define CBES_EX_NOEDITIMAGEINDENT
#define CBEM_SETIMAGELIST
#define CBES_EX_NOSIZELIMIT
#define CBES_EX_CASESENSITIVE
#define INDEXTOOVERLAYMASK(i)
#define CBEN_GETDISPINFOW
#define CBEM_SETUNICODEFORMAT
#define CBES_EX_PATHWORDBREAKPROC
#define CBEM_GETEXTENDEDSTYLE
#define CBEM_GETEDITCONTROL
void redraw(int x, int y, int cx, int cy)
static unsigned __int64 next
static __inline const char * wine_dbgstr_rect(const RECT *rect)
COLORREF clrHighlightText
char szText[CBEMAXSTRLEN]
WCHAR szText[CBEMAXSTRLEN]
char szText[CBEMAXSTRLEN]
WCHAR szText[CBEMAXSTRLEN]
struct _CBE_ITEMDATA * next
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI GetTextExtentPointW(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
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)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
HWND WINAPI GetFocus(void)
#define CBS_OWNERDRAWFIXED
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define CB_SETDROPPEDWIDTH
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
#define GetWindowLongPtrW
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI ReleaseCapture(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define CBS_NOINTEGRALHEIGHT
#define WM_WINDOWPOSCHANGING
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)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define CB_FINDSTRINGEXACT
#define SPI_GETICONTITLELOGFONT
#define WM_SYSCOLORCHANGE
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define CB_GETDROPPEDCONTROLRECT
HWND WINAPI SetFocus(_In_opt_ HWND)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR 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 EnableWindow(_In_ HWND, _In_ BOOL)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
#define CB_GETDROPPEDSTATE
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
int WINAPI GetDlgCtrlID(_In_ HWND)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI IsWindowVisible(_In_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free