88#define MDI_MAXTITLELENGTH 0xa1
90#define WM_MDICALCCHILDSCROLL 0x003f
93#define MDI_MOREWINDOWSLIMIT 9
95#define MDI_IDC_LISTBOX 100
96#define IDS_MDI_MOREWINDOWS 13
98#define MDIF_NEEDUPDATE 0x0001
173 pHwnd[dwCount] = (
HWND) 0;
266 if (bNext)
goto found;
274 if (bNext)
goto found;
297 TRACE(
"MDI child id %04x\n", *
id);
307 lpPos[0].
x = lpPos[0].
y = spacing * (
total%(nstagger+1));
319 TRACE(
"%p, frame menu %p, window menu %p\n",
hwnd, hmenuFrame, hmenuWindow);
321 if (hmenuFrame && !
IsMenu(hmenuFrame))
323 WARN(
"hmenuFrame is not a menu handle\n");
327 if (hmenuWindow && !
IsMenu(hmenuWindow))
329 WARN(
"hmenuWindow is not a menu handle\n");
345 if( hmenuWindow && hmenuWindow != ci->
hWindowMenu )
418 memset(&mii, 0,
sizeof(mii));
426 memset(&mii, 0,
sizeof(mii));
433 TRACE(
"removing %u items including separator\n",
count -
i);
467 buf[1] =
'0' + visible;
481 TRACE(
"MDI child %p is not visible, skipping\n", ci->
child[
i]);
525 TRACE(
"from %p, to %p\n", hwndPrev, hwndTo);
527 if ( hwndTo != hwndPrev )
585 if (new_child !=
NULL)
591 ci->
child = new_child;
628 HWND prevActiveWnd, frame;
629 BOOL isActiveFrameWnd;
653 if( isActiveFrameWnd )
722 for (
i =
total = 0; win_array[
i];
i++)
731 win_array[
total++] = win_array[
i];
733 win_array[
total] = 0;
737 INT delta = 0,
n = 0,
i;
748 TRACE(
"move %p to (%ld,%ld) size [%ld,%ld]\n",
768 int i,
total, rows, columns;
779 for (
i =
total = rows = 0; win_array[
i];
i++)
789 if(
total == (rows * (rows + 2))) rows++;
790 win_array[
total++] = win_array[
i];
792 win_array[
total] = 0;
798 HWND *pWnd = win_array;
800 int x,
y, xsize, ysize;
804 columns =
total/rows;
823 for (
x =
i = 0,
c = 1;
c <= columns && *pWnd;
c++)
832 for (
r = 1;
r <= rows && *pWnd;
r++,
i++)
873 ERR(
"system buttons already exist\n");
880 TRACE(
"child %p doesn't have a system menu\n",
hChild);
919 NtUserDrawIconEx(hMemDC, 0, 0,
hIcon,
cx,
cy, 0,
GetSysColorBrush(
COLOR_MENU),
DI_NORMAL, 0, 0);
933 TRACE(
"not inserted\n");
968 ERR(
"no system buttons then nothing to do\n");
976 memset(&menuInfo, 0,
sizeof(menuInfo));
977 menuInfo.
cbSize =
sizeof(menuInfo);
994 if ( menuInfo.hbmpItem != 0 )
1124 TRACE(
"Client created: hwnd %p, Window menu %p, idFirst = %04x\n",
1174 csW->
x, csW->
y, csW->
cx, csW->
cy,
1183 csA->
x, csA->
y, csA->
cx, csA->
cy,
1269 TRACE(
"Adding MDI child %p, # of children %d\n",
1402 if( (
id - 0xf000) & 0xf00f )
break;
1609 if( hMaxChild ==
hwnd )
break;
1635 if (!switchTo) switchTo =
hwnd;
1694 TRACE(
"(%s,%s,%08lx,%d,%d,%d,%d,%p,%p,%08Ix)\n",
1722 TRACE(
"(%s,%s,%08lx,%d,%d,%d,%d,%p,%p,%08Ix)\n",
1747 switch(
msg->wParam )
1781 RECT childRect, clientRect;
1803 WindowInfo.
cbSize =
sizeof(WindowInfo);
1806 ERR(
"Can't get window info\n");
1811 TRACE(
"CalcChildScroll 1\n");
1822 ERR(
"CalcChildScroll 2\n");
1840 UnionRect( &childRect, &clientRect, &childRect );
1841 TRACE(
"CalcChildScroll 3\n");
1892 SetThreadDpiAwarenessContext(
context );
1938 newPos = curPos -
shift;
1941 newPos = curPos +
shift;
1944 newPos = curPos -
length;
1947 newPos = curPos +
length;
1968 if( newPos > maxPos )
1971 if( newPos < minPos )
1984 SetThreadDpiAwarenessContext(
context );
1999typedef struct CASCADE_INFO
2016 CASCADE_INFO *pInfo = (CASCADE_INFO *)
lParam;
2018 if (
hwnd == pInfo->hwndDesktop ||
hwnd == pInfo->hTrayWnd ||
2019 hwnd == pInfo->hwndProgman ||
hwnd == pInfo->hwndTop)
2024 if (pInfo->hwndParent &&
GetParent(
hwnd) != pInfo->hwndParent)
2033 count = pInfo->chwnd;
2048 pInfo->ahwnd = ahwnd;
2051 if (pInfo->ahwnd ==
NULL)
2058 pInfo->chwnd =
count + 1;
2073 *pcx =
min(
max(*pcx, mmi.ptMinTrackSize.x), mmi.ptMaxTrackSize.x);
2074 *pcy =
min(
max(*pcy, mmi.ptMinTrackSize.y), mmi.ptMaxTrackSize.y);
2105 if (cKids == 0 || lpKids ==
NULL)
2107 info.hwndTop = hwndTop;
2150 for (
i =
info.chwnd;
i > 0;)
2172#define MIN_THRESHOLD(xy) (((xy) * 4) / 7)
2173#define MAX_THRESHOLD(xy) (((xy) * 5) / 7)
2178 if (
cx != cxNew ||
cy != cyNew)
2181 if (QuerySizeFix(
hwnd, &cxNew, &cyNew))
2213 if (cKids == 0 || lpKids ==
NULL)
2243 DWORD i, iRow, iColumn, cRows, cColumns,
ret = 0;
2244 INT x,
y,
cx,
cy, cxNew, cyNew, cxWork, cyWork, cxCell, cyCell, cxMin2, cyMin3;
2261 if (cKids == 0 || lpKids ==
NULL)
2263 info.hwndTop = hwndTop;
2304 cColumns =
info.chwnd;
2308 cxCell = cxWork / cColumns;
2309 cyCell = cyWork / cRows;
2310 if (cyCell <= cyMin3 || cxCell >= cxMin2)
2314 cColumns = (
info.chwnd + cRows - 1) / cRows;
2323 cxCell = cxWork / cColumns;
2324 cyCell = cyWork / cRows;
2325 if (cxCell <= cxMin2 || cyCell >= cyMin3)
2329 cRows = (
info.chwnd + cColumns - 1) / cColumns;
2341 for (
i =
info.chwnd;
i > 0;)
2359 if (QuerySizeFix(
hwnd, &cxNew, &cyNew))
2377 if (iColumn >= cColumns)
2407 if (cKids == 0 || lpKids ==
NULL)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ERROR_NOT_ENOUGH_MEMORY
#define NT_SUCCESS(StatCode)
#define HeapFree(x, y, z)
#define MultiByteToWideChar
static void cleanup(void)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Height *Stride) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Stride)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
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 NtUserSetMenu(HWND hWnd, HMENU hMenu, BOOL bRepaint)
BOOL NTAPI NtUserDrawIconEx(HDC hdc, int xLeft, int yTop, HICON hIcon, int cxWidth, int cyWidth, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags, BOOL bMetaHDC, PVOID pDIXData)
BOOL NTAPI NtUserSetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
DWORD NTAPI NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *rect, const RECT *clipRect, HRGN hrgnUpdate, LPRECT rcUpdate, UINT flags)
INT NTAPI NtUserInternalGetWindowText(HWND hWnd, LPWSTR lpString, INT nMaxCount)
DWORD NTAPI NtUserCheckMenuItem(HMENU hmenu, UINT uIDCheckItem, UINT uCheck)
HWND NTAPI NtUserSetFocus(HWND hWnd)
DWORD NTAPI NtUserSetScrollInfo(HWND hwnd, int fnBar, LPCSCROLLINFO lpsi, BOOL bRedraw)
HMENU NTAPI NtUserGetSystemMenu(HWND hWnd, BOOL bRevert)
DWORD_PTR NTAPI NtUserCallTwoParam(DWORD_PTR Param1, DWORD_PTR Param2, DWORD Routine)
BOOL NTAPI NtUserMoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)
BOOLEAN NTAPI NtUserDestroyWindow(HWND Wnd)
@ TWOPARAM_ROUTINE_REDRAWTITLE
BOOL NTAPI NtUserSetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos)
UINT NTAPI NtUserEnableMenuItem(HMENU hMenu, UINT uIDEnableItem, UINT uEnable)
BOOL NTAPI NtUserDeleteMenu(HMENU hMenu, UINT uPosition, UINT uFlags)
BOOL NTAPI NtUserDestroyMenu(HMENU hMenu)
SHORT NTAPI NtUserGetKeyState(INT VirtKey)
BOOL NTAPI NtUserShowWindow(HWND hWnd, LONG nCmdShow)
NTSTATUS NTAPI NtUserBuildHwndList(HDESK hDesktop, HWND hwndParent, BOOLEAN bChildren, ULONG dwThreadId, ULONG cHwnd, HWND *phwndList, ULONG *pcHwndNeeded)
BOOL NTAPI NtUserRemoveMenu(HMENU hMenu, UINT uPosition, UINT uFlags)
DWORD NTAPI NtUserShowScrollBar(HWND hWnd, int wBar, DWORD bShow)
BOOL NTAPI NtUserSetWindowFNID(HWND hWnd, WORD fnID)
BOOL NTAPI NtUserEndDeferWindowPosEx(HDWP WinPosInfo, BOOL bAsync)
HDC NTAPI NtUserGetDC(HWND hWnd)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static const LARGE_INTEGER *static const HANDLE const LARGE_INTEGER *static PSLIST_ENTRY PSLIST_ENTRY last
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static DPI_AWARENESS_CONTEXT
unsigned __int3264 UINT_PTR
HMONITOR WINAPI MonitorFromPoint(POINT, DWORD)
_Out_opt_ int _Out_opt_ int * cy
HWND WINAPI ChildWindowFromPoint(_In_ HWND, _In_ POINT)
BOOL WINAPI IsWindow(_In_opt_ HWND)
HWND WINAPI GetActiveWindow(void)
#define GetWindowLongPtrW
#define HBMMENU_MBAR_RESTORE
#define LB_SETHORIZONTALEXTENT
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)
UINT WINAPI GetMenuState(_In_ HMENU, _In_ UINT, _In_ UINT)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SW_SCROLLCHILDREN
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI GetWindowInfo(_In_ HWND, _Inout_ PWINDOWINFO)
#define HBMMENU_MBAR_MINIMIZE
WORD WINAPI CascadeWindows(_In_opt_ HWND hwndParent, _In_ UINT wHow, _In_opt_ CONST RECT *lpRect, _In_ UINT cKids, _In_reads_opt_(cKids) const HWND FAR *lpKids)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
HWND WINAPI GetTopWindow(_In_opt_ HWND)
struct tagCREATESTRUCTA * LPCREATESTRUCTA
BOOL WINAPI SetForegroundWindow(_In_ HWND)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
#define SW_SHOWNOACTIVATE
BOOL WINAPI IsMenu(_In_ HMENU)
#define GetWindowLongPtrA
UINT WINAPI GetMenuItemID(_In_ HMENU, _In_ int)
BOOL WINAPI InsertMenuA(_In_ HMENU, _In_ UINT, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCSTR)
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
int WINAPI SetScrollPos(_In_ HWND, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageTimeoutW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM, _In_ UINT, _In_ UINT, _Out_opt_ PDWORD_PTR)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
BOOL WINAPI IsIconic(_In_ HWND)
BOOL WINAPI GetScrollRange(_In_ HWND, _In_ int, _Out_ LPINT, _Out_ LPINT)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define WM_MDIREFRESHMENU
#define WM_MDIICONARRANGE
HWND WINAPI GetDesktopWindow(void)
BOOL WINAPI IsZoomed(_In_ HWND)
WORD WINAPI TileWindows(_In_opt_ HWND hwndParent, _In_ UINT wHow, _In_opt_ CONST RECT *lpRect, _In_ UINT cKids, _In_reads_opt_(cKids) const HWND FAR *lpKids)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI TranslateMDISysAccel(_In_ HWND, _In_ LPMSG)
#define MAKELRESULT(l, h)
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)
#define COLOR_APPWORKSPACE
INT_PTR WINAPI DialogBoxIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
#define HBMMENU_MBAR_CLOSE
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
struct tagCLIENTCREATESTRUCT * LPCLIENTCREATESTRUCT
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
#define MDITILE_SKIPDISABLED
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define MDITILE_HORIZONTAL
#define HBMMENU_MBAR_CLOSE_D
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
HWND WINAPI FindWindowW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR)
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
#define MAKEINTRESOURCEW(i)
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI UnionRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
#define SetWindowLongPtrW
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HMENU WINAPI GetMenu(_In_ HWND)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
const struct builtin_class_descr MDICLIENT_builtin_class
WNDPROC pfnMDIClientWndProc
PSYMCRYPT_PARALLEL_HASH_OPERATION next
const char * SPY_GetMsgName(UINT msg, HWND hWnd)
#define NtUserDrawMenuBar(HWND)
#define NtUserReleaseDC(HWND, HDC)
#define WIN_GetFullHandle(h)
#define NtUserSetMDIClientInfo(HWND, INFO)
#define NtUserGetWindowSysSubMenu(HWND)
#define NtUserArrangeIconicWindows(HWND)
#define NTUSER_WNDPROC_MDICLIENT
#define NtUserGetMDIClientInfo(HWND)
static void MDITile(HWND client, MDICLIENTINFO *ci, WPARAM wParam)
void WINAPI CalcChildScroll(HWND hwnd, INT scroll)
HWND WINAPI CreateMDIWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, INT X, INT Y, INT nWidth, INT nHeight, HWND hWndParent, HINSTANCE hInstance, LPARAM lParam)
LRESULT WINAPI DefMDIChildProcA(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
#define IDS_MDI_MOREWINDOWS
#define MDI_MOREWINDOWSLIMIT
static LRESULT MDI_RefreshMenu(MDICLIENTINFO *)
static LRESULT MDISetMenu(HWND hwnd, HMENU hmenuFrame, HMENU hmenuWindow)
HWND * WIN_ListChildren(HWND hWndparent)
static void MDI_SwitchActiveChild(MDICLIENTINFO *ci, HWND hwndTo, BOOL activate)
LRESULT WINAPI MDIClientWndProcW(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static BOOL MDI_RestoreFrameMenu(HWND, HWND, HBITMAP)
static void MDI_PostUpdate(HWND hwnd, MDICLIENTINFO *ci, WORD recalc)
static LRESULT MDIDestroyChild(HWND client, MDICLIENTINFO *ci, HWND child, BOOL flagDestroy)
static HBITMAP CreateMDIMenuBitmap(void)
static HWND MDI_GetChildByID(HWND hwnd, UINT id, MDICLIENTINFO *ci)
#define WM_MDICALCCHILDSCROLL
void MDI_CalcDefaultChildPos(HWND hwndClient, INT total, LPPOINT lpPos, INT delta, UINT *id)
static void MDI_UpdateFrameText(HWND, HWND, BOOL, LPCWSTR)
LRESULT WINAPI DefFrameProcW(HWND hwnd, HWND hwndMDIClient, UINT message, WPARAM wParam, LPARAM lParam)
static LONG MDICascade(HWND client, MDICLIENTINFO *ci)
static LONG MDI_ChildActivate(HWND, HWND)
LRESULT WINAPI DefMDIChildProcW(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
LRESULT WINAPI DefFrameProcA(HWND hwnd, HWND hwndMDIClient, UINT message, WPARAM wParam, LPARAM lParam)
LRESULT WINAPI MDIClientWndProcA(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
static MDICLIENTINFO * get_client_info(HWND client)
static HWND MDI_MoreWindowsDialog(HWND)
LRESULT WINAPI MDIClientWndProc_common(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, BOOL unicode)
static BOOL is_close_enabled(HWND hwnd, HMENU hSysMenu)
HWND WINAPI CreateMDIWindowA(LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, INT X, INT Y, INT nWidth, INT nHeight, HWND hWndParent, HINSTANCE hInstance, LPARAM lParam)
static INT_PTR WINAPI MDI_MoreWindowsDlgProc(HWND hDlg, UINT iMsg, WPARAM wParam, LPARAM lParam)
static BOOL MDI_AugmentFrameMenu(HWND, HWND)
void WINAPI ScrollChildren(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void MDI_ChildGetMinMaxInfo(HWND client, HWND hwnd, MINMAXINFO *lpMinMax)
static HWND MDI_GetWindow(MDICLIENTINFO *clientInfo, HWND hWnd, BOOL bNext, DWORD dwStyleMask)
#define MDI_MAXTITLELENGTH
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DPI_AWARENESS_CONTEXT WINAPI GetWindowDpiAwarenessContext(HWND hwnd)
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
int WINAPI SetMapMode(_In_ HDC, _In_ int)
HGDIOBJ WINAPI GetStockObject(_In_ int)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)