ReactOS  0.4.12-dev-916-gffc4e30
window.c File Reference
#include <user32.h>
Include dependency graph for window.c:

Go to the source code of this file.

Macros

#define DEBUG
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (user32)
 
void MDI_CalcDefaultChildPos (HWND hwndClient, INT total, LPPOINT lpPos, INT delta, UINT *id)
 
LPCWSTR FASTCALL ClassNameToVersion (const void *lpszClass, LPCWSTR lpszMenuName, LPCWSTR *plpLibFileName, HANDLE *pContext, BOOL bAnsi)
 
NTSTATUS WINAPI User32CallSendAsyncProcForKernel (PVOID Arguments, ULONG ArgumentLength)
 
BOOL WINAPI AllowSetForegroundWindow (DWORD dwProcessId)
 
HDWP WINAPI BeginDeferWindowPos (int nNumWindows)
 
BOOL WINAPI BringWindowToTop (HWND hWnd)
 
VOID WINAPI SwitchToThisWindow (HWND hwnd, BOOL fAltTab)
 
HWND WINAPI ChildWindowFromPoint (HWND hWndParent, POINT Point)
 
HWND WINAPI ChildWindowFromPointEx (HWND hwndParent, POINT pt, UINT uFlags)
 
BOOL WINAPI CloseWindow (HWND hWnd)
 
FORCEINLINE VOID RtlInitLargeString (OUT PLARGE_STRING plstr, LPCVOID psz, BOOL bUnicode)
 
VOID NTAPI RtlFreeLargeString (IN PLARGE_STRING LargeString)
 
HWND WINAPI User32CreateWindowEx (DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam, DWORD dwFlags)
 
HWND WINAPI DECLSPEC_HOTPATCH CreateWindowExA (DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
 
HWND WINAPI DECLSPEC_HOTPATCH CreateWindowExW (DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
 
HDWP WINAPI DeferWindowPos (HDWP hWinPosInfo, HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
 
BOOL WINAPI EndDeferWindowPos (HDWP hWinPosInfo)
 
HWND WINAPI GetDesktopWindow (VOID)
 
static BOOL User32EnumWindows (HDESK hDesktop, HWND hWndparent, WNDENUMPROC lpfn, LPARAM lParam, DWORD dwThreadId, BOOL bChildren)
 
BOOL WINAPI EnumChildWindows (HWND hWndParent, WNDENUMPROC lpEnumFunc, LPARAM lParam)
 
BOOL WINAPI EnumThreadWindows (DWORD dwThreadId, WNDENUMPROC lpfn, LPARAM lParam)
 
BOOL WINAPI EnumWindows (WNDENUMPROC lpEnumFunc, LPARAM lParam)
 
BOOL WINAPI EnumDesktopWindows (HDESK hDesktop, WNDENUMPROC lpfn, LPARAM lParam)
 
HWND WINAPI FindWindowExA (HWND hwndParent, HWND hwndChildAfter, LPCSTR lpszClass, LPCSTR lpszWindow)
 
HWND WINAPI FindWindowExW (HWND hwndParent, HWND hwndChildAfter, LPCWSTR lpszClass, LPCWSTR lpszWindow)
 
HWND WINAPI FindWindowA (LPCSTR lpClassName, LPCSTR lpWindowName)
 
HWND WINAPI FindWindowW (LPCWSTR lpClassName, LPCWSTR lpWindowName)
 
BOOL WINAPI GetAltTabInfoA (HWND hwnd, int iItem, PALTTABINFO pati, LPSTR pszItemText, UINT cchItemText)
 
BOOL WINAPI GetAltTabInfoW (HWND hwnd, int iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText)
 
HWND WINAPI GetAncestor (HWND hwnd, UINT gaFlags)
 
BOOL WINAPI GetClientRect (HWND hWnd, LPRECT lpRect)
 
HWND WINAPI GetLastActivePopup (HWND hWnd)
 
HWND WINAPI GetParent (HWND hWnd)
 
BOOL WINAPI GetProcessDefaultLayout (DWORD *pdwDefaultLayout)
 
HWND WINAPI GetWindow (HWND hWnd, UINT uCmd)
 
HWND WINAPI GetTopWindow (HWND hWnd)
 
BOOL WINAPI DECLSPEC_HOTPATCH GetWindowInfo (HWND hWnd, PWINDOWINFO pwi)
 
UINT WINAPI GetWindowModuleFileNameA (HWND hwnd, LPSTR lpszFileName, UINT cchFileNameMax)
 
UINT WINAPI GetWindowModuleFileNameW (HWND hwnd, LPWSTR lpszFileName, UINT cchFileNameMax)
 
BOOL WINAPI GetWindowRect (HWND hWnd, LPRECT lpRect)
 
int WINAPI GetWindowTextA (HWND hWnd, LPSTR lpString, int nMaxCount)
 
int WINAPI GetWindowTextLengthA (HWND hWnd)
 
int WINAPI GetWindowTextLengthW (HWND hWnd)
 
int WINAPI GetWindowTextW (HWND hWnd, LPWSTR lpString, int nMaxCount)
 
DWORD WINAPI GetWindowThreadProcessId (HWND hWnd, LPDWORD lpdwProcessId)
 
BOOL WINAPI IsChild (HWND hWndParent, HWND hWnd)
 
BOOL WINAPI IsIconic (HWND hWnd)
 
BOOL WINAPI IsWindow (HWND hWnd)
 
BOOL WINAPI IsWindowUnicode (HWND hWnd)
 
BOOL WINAPI IsWindowVisible (HWND hWnd)
 
BOOL WINAPI IsWindowEnabled (HWND hWnd)
 
BOOL WINAPI IsZoomed (HWND hWnd)
 
BOOL WINAPI LockSetForegroundWindow (UINT uLockCode)
 
BOOL WINAPI AnimateWindow (HWND hwnd, DWORD dwTime, DWORD dwFlags)
 
BOOL WINAPI OpenIcon (HWND hWnd)
 
HWND WINAPI RealChildWindowFromPoint (HWND hwndParent, POINT ptParentClientCoords)
 
BOOL WINAPI SetForegroundWindow (HWND hWnd)
 
BOOL WINAPI SetProcessDefaultLayout (DWORD dwDefaultLayout)
 
BOOL WINAPI DECLSPEC_HOTPATCH SetWindowTextA (HWND hWnd, LPCSTR lpString)
 
BOOL WINAPI DECLSPEC_HOTPATCH SetWindowTextW (HWND hWnd, LPCWSTR lpString)
 
BOOL WINAPI ShowOwnedPopups (HWND hWnd, BOOL fShow)
 
BOOL WINAPI UpdateLayeredWindow (HWND hwnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pbl, DWORD dwFlags)
 
BOOL WINAPI UpdateLayeredWindowIndirect (HWND hwnd, const UPDATELAYEREDWINDOWINFO *info)
 
BOOL WINAPI SetWindowContextHelpId (HWND hwnd, DWORD dwContextHelpId)
 
DWORD WINAPI GetWindowContextHelpId (HWND hwnd)
 
int WINAPI InternalGetWindowText (HWND hWnd, LPWSTR lpString, int nMaxCount)
 
BOOL WINAPI IsHungAppWindow (HWND hwnd)
 
VOID WINAPI SetLastErrorEx (DWORD dwErrCode, DWORD dwType)
 
HWND WINAPI GetFocus (VOID)
 
DWORD WINAPI GetRealWindowOwner (HWND hwnd)
 
HWND WINAPI SetTaskmanWindow (HWND hWnd)
 
HWND WINAPI SetProgmanWindow (HWND hWnd)
 
HWND WINAPI GetProgmanWindow (VOID)
 
HWND WINAPI GetTaskmanWindow (VOID)
 
BOOL WINAPI ScrollWindow (HWND hWnd, int dx, int dy, CONST RECT *lpRect, CONST RECT *prcClip)
 
INT WINAPI ScrollWindowEx (HWND hWnd, int dx, int dy, CONST RECT *prcScroll, CONST RECT *prcClip, HRGN hrgnUpdate, LPRECT prcUpdate, UINT flags)
 
BOOL WINAPI AnyPopup (VOID)
 
BOOL WINAPI IsWindowInDestroy (HWND hWnd)
 
VOID WINAPI DisableProcessWindowsGhosting (VOID)
 

Macro Definition Documentation

◆ DEBUG

#define DEBUG

Definition at line 12 of file window.c.

Function Documentation

◆ AllowSetForegroundWindow()

BOOL WINAPI AllowSetForegroundWindow ( DWORD  dwProcessId)

Definition at line 49 of file window.c.

50 {
51  return NtUserxAllowSetForegroundWindow(dwProcessId);
52 }
EXTINLINE BOOL NtUserxAllowSetForegroundWindow(DWORD dwProcessId)
Definition: ntwrapper.h:836

Referenced by SHCreateFromDesktop(), and NotifyArea::WndProc().

◆ AnimateWindow()

BOOL WINAPI AnimateWindow ( HWND  hwnd,
DWORD  dwTime,
DWORD  dwFlags 
)

Definition at line 1622 of file window.c.

1625 {
1626  /* FIXME Add animation code */
1627 
1628  /* If trying to show/hide and it's already *
1629  * shown/hidden or invalid window, fail with *
1630  * invalid parameter */
1631 
1632  BOOL visible;
1633  visible = IsWindowVisible(hwnd);
1634  if(!IsWindow(hwnd) ||
1635  (visible && !(dwFlags & AW_HIDE)) ||
1636  (!visible && (dwFlags & AW_HIDE)))
1637  {
1639  return FALSE;
1640  }
1641 
1642  ShowWindow(hwnd, (dwFlags & AW_HIDE) ? SW_HIDE : ((dwFlags & AW_ACTIVATE) ? SW_SHOW : SW_SHOWNA));
1643 
1644  return TRUE;
1645 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
#define SW_HIDE
Definition: winuser.h:762
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL WINAPI IsWindowVisible(HWND hWnd)
Definition: window.c:1547
#define SW_SHOW
Definition: winuser.h:769
BOOL WINAPI IsWindow(HWND hWnd)
Definition: window.c:1513
#define SetLastError(x)
Definition: compat.h:409
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define SW_SHOWNA
Definition: winuser.h:772

◆ AnyPopup()

BOOL WINAPI AnyPopup ( VOID  )

Definition at line 1976 of file window.c.

1977 {
1978  int i;
1979  BOOL retvalue;
1981 
1982  if (!list) return FALSE;
1983  for (i = 0; list[i]; i++)
1984  {
1985  if (IsWindowVisible( list[i] ) && GetWindow( list[i], GW_OWNER )) break;
1986  }
1987  retvalue = (list[i] != 0);
1988  HeapFree( GetProcessHeap(), 0, list );
1989  return retvalue;
1990 }
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
HWND WINAPI GetDesktopWindow(VOID)
Definition: window.c:622
BOOL WINAPI IsWindowVisible(HWND hWnd)
Definition: window.c:1547
HWND WINAPI GetWindow(HWND hWnd, UINT uCmd)
Definition: window.c:1089
#define GetProcessHeap()
Definition: compat.h:395
Definition: _list.h:228
#define GW_OWNER
Definition: winuser.h:761
HWND * WIN_ListChildren(HWND hWndparent)
Definition: mdi.c:140
#define HeapFree(x, y, z)
Definition: compat.h:394

◆ BeginDeferWindowPos()

HDWP WINAPI BeginDeferWindowPos ( int  nNumWindows)

Definition at line 59 of file window.c.

60 {
61  return NtUserxBeginDeferWindowPos(nNumWindows);
62 }
EXTINLINE HDWP NtUserxBeginDeferWindowPos(INT nNumWindows)
Definition: ntwrapper.h:651

◆ BringWindowToTop()

BOOL WINAPI BringWindowToTop ( HWND  hWnd)

Definition at line 69 of file window.c.

70 {
71  return NtUserSetWindowPos(hWnd,
72  HWND_TOP,
73  0,
74  0,
75  0,
76  0,
78 }
HWND hWnd
Definition: settings.c:17
#define HWND_TOP
Definition: winuser.h:1193
#define SWP_NOSIZE
Definition: winuser.h:1230
BOOL NTAPI NtUserSetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
Definition: winpos.c:3329
#define SWP_NOMOVE
Definition: winuser.h:1229

◆ ChildWindowFromPoint()

HWND WINAPI ChildWindowFromPoint ( HWND  hWndParent,
POINT  Point 
)

Definition at line 92 of file window.c.

94 {
96 }
HWND NTAPI NtUserChildWindowFromPointEx(HWND Parent, LONG x, LONG y, UINT Flags)
Definition: winpos.c:3047

◆ ChildWindowFromPointEx()

HWND WINAPI ChildWindowFromPointEx ( HWND  hwndParent,
POINT  pt,
UINT  uFlags 
)

Definition at line 103 of file window.c.

106 {
108 }
#define pt(x, y)
Definition: drawing.c:79
HWND NTAPI NtUserChildWindowFromPointEx(HWND Parent, LONG x, LONG y, UINT Flags)
Definition: winpos.c:3047
UINT uFlags
Definition: api.c:60
static HWND hwndParent
Definition: cryptui.c:300

◆ ClassNameToVersion()

LPCWSTR FASTCALL ClassNameToVersion ( const void lpszClass,
LPCWSTR  lpszMenuName,
LPCWSTR plpLibFileName,
HANDLE pContext,
BOOL  bAnsi 
)

Definition at line 85 of file class.c.

91 {
92  LPCWSTR VersionedClass = NULL;
93 #ifdef USE_VERSIONED_CLASSES
95 #endif
96  UNICODE_STRING SectionName;
97  WCHAR SectionNameBuf[MAX_PATH] = {0};
98  ACTCTX_SECTION_KEYED_DATA KeyedData = { sizeof(KeyedData) };
99 
100  if(!lpszClass)
101  {
102  ERR("Null class given !\n");
103  return NULL;
104  }
105 
106  if (IS_ATOM(lpszClass))
107  {
108  RtlInitEmptyUnicodeString(&SectionName, SectionNameBuf, sizeof(SectionNameBuf));
109  if(!NtUserGetAtomName(LOWORD((DWORD_PTR)lpszClass), &SectionName))
110  {
111  ERR("Couldn't get atom name for atom %x !\n", LOWORD((DWORD_PTR)lpszClass));
112  return NULL;
113  }
114  SectionName.Length = wcslen(SectionNameBuf) * sizeof(WCHAR);
115  TRACE("ClassNameToVersion got name %wZ from atom\n", &SectionName);
116  }
117  else
118  {
119  if (bAnsi)
120  {
122  RtlInitAnsiString(&AnsiString, lpszClass);
123  RtlInitEmptyUnicodeString(&SectionName, SectionNameBuf, sizeof(SectionNameBuf));
125  }
126  else
127  {
128  RtlInitUnicodeString(&SectionName, lpszClass);
129  }
130  }
131 #ifdef USE_VERSIONED_CLASSES
132  Status = RtlFindActivationContextSectionString( FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX,
133  NULL,
134  ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
135  &SectionName,
136  &KeyedData );
137 
138  if (NT_SUCCESS(Status) && KeyedData.ulDataFormatVersion == 1)
139  {
140  struct strsection_header *SectionHeader = KeyedData.lpSectionBase;
141 
142  /* Find activation context */
143  if(SectionHeader && SectionHeader->count > 0)
144  {
145  struct wndclass_redirect_data *WindowRedirectionData = KeyedData.lpData;
146  if(WindowRedirectionData && WindowRedirectionData->module_len)
147  {
148  LPCWSTR lpLibFileName;
149 
150  VersionedClass = (WCHAR*)((BYTE*)WindowRedirectionData + WindowRedirectionData->name_offset);
151  lpLibFileName = (WCHAR*)((BYTE*)KeyedData.lpSectionBase + WindowRedirectionData->module_offset);
152  TRACE("Returning VersionedClass=%S, plpLibFileName=%S for class %S\n", VersionedClass, lpLibFileName, SectionName.Buffer);
153 
154  if (pContext) *pContext = KeyedData.hActCtx;
155  if (plpLibFileName) *plpLibFileName = lpLibFileName;
156 
157  }
158  }
159  }
160 
161  if (KeyedData.hActCtx)
162  RtlReleaseActivationContext(KeyedData.hActCtx);
163 #endif
164 
165 #ifndef DEFAULT_ACTIVATION_CONTEXTS_SUPPORTED
166  /* This block is a hack! */
167  if (!VersionedClass)
168  {
169  /*
170  * In windows the default activation context always contains comctl32v5
171  * In reactos we don't have a default activation context so we
172  * mimic wine here.
173  */
174  VersionedClass = is_comctl32_class(SectionName.Buffer);
175  if (VersionedClass)
176  {
177  if (pContext) *pContext = 0;
178  if (plpLibFileName) *plpLibFileName = L"comctl32";
179  }
180  }
181 #endif
182 
183  /*
184  * The returned strings are pointers in the activation context and
185  * will get freed when the activation context gets freed
186  */
187  return VersionedClass;
188 }
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE)
Definition: actctx.c:5267
LPCWSTR is_comctl32_class(const WCHAR *name)
Definition: class.c:46
LONG NTSTATUS
Definition: precomp.h:26
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define MAX_PATH
Definition: compat.h:26
static const WCHAR L[]
Definition: oid.c:1250
NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG, const GUID *, ULONG, const UNICODE_STRING *, PVOID)
Definition: actctx.c:5738
unsigned char BYTE
Definition: mem.h:68
uint32_t DWORD_PTR
Definition: typedefs.h:63
Status
Definition: gdiplustypes.h:24
#define ERR(fmt,...)
Definition: debug.h:109
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define IS_ATOM(x)
Definition: class.h:3
#define LOWORD(l)
Definition: pedump.c:82
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

Referenced by GetClassInfoExA(), GetClassInfoExW(), RegisterClassExWOWW(), UnregisterClassA(), UnregisterClassW(), and User32CreateWindowEx().

◆ CloseWindow()

BOOL WINAPI CloseWindow ( HWND  hWnd)

Definition at line 115 of file window.c.

116 {
117  /* NOTE: CloseWindow does minimizes, and doesn't close. */
120 }
HWND hWnd
Definition: settings.c:17
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_SHOWMINIMIZED
Definition: winuser.h:765
HWND WINAPI SetActiveWindow(_In_ HWND)

◆ CreateWindowExA()

HWND WINAPI DECLSPEC_HOTPATCH CreateWindowExA ( DWORD  dwExStyle,
LPCSTR  lpClassName,
LPCSTR  lpWindowName,
DWORD  dwStyle,
int  x,
int  y,
int  nWidth,
int  nHeight,
HWND  hWndParent,
HMENU  hMenu,
HINSTANCE  hInstance,
LPVOID  lpParam 
)

Definition at line 348 of file window.c.

360 {
361  MDICREATESTRUCTA mdi;
362  HWND hwnd;
363 
365  {
366  TRACE("CreateWindowExA RegisterSystemControls\n");
368  }
369 
370  if (dwExStyle & WS_EX_MDICHILD)
371  {
372  POINT mPos[2];
373  UINT id = 0;
374  HWND top_child;
375  PWND pWndParent;
376 
377  pWndParent = ValidateHwnd(hWndParent);
378 
379  if (!pWndParent) return NULL;
380 
381  if (pWndParent->fnid != FNID_MDICLIENT) // wine uses WIN_ISMDICLIENT
382  {
383  WARN("WS_EX_MDICHILD, but parent %p is not MDIClient\n", hWndParent);
384  return NULL;
385  }
386 
387  /* lpParams of WM_[NC]CREATE is different for MDI children.
388  * MDICREATESTRUCT members have the originally passed values.
389  */
390  mdi.szClass = lpClassName;
391  mdi.szTitle = lpWindowName;
392  mdi.hOwner = hInstance;
393  mdi.x = x;
394  mdi.y = y;
395  mdi.cx = nWidth;
396  mdi.cy = nHeight;
397  mdi.style = dwStyle;
398  mdi.lParam = (LPARAM)lpParam;
399 
400  lpParam = (LPVOID)&mdi;
401 
402  if (pWndParent->style & MDIS_ALLCHILDSTYLES)
403  {
404  if (dwStyle & WS_POPUP)
405  {
406  WARN("WS_POPUP with MDIS_ALLCHILDSTYLES is not allowed\n");
407  return(0);
408  }
409  dwStyle |= (WS_CHILD | WS_CLIPSIBLINGS);
410  }
411  else
412  {
413  dwStyle &= ~WS_POPUP;
414  dwStyle |= (WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION |
416  }
417 
418  top_child = GetWindow(hWndParent, GW_CHILD);
419 
420  if (top_child)
421  {
422  /* Restore current maximized child */
423  if((dwStyle & WS_VISIBLE) && IsZoomed(top_child))
424  {
425  TRACE("Restoring current maximized child %p\n", top_child);
426  SendMessageW( top_child, WM_SETREDRAW, FALSE, 0 );
427  ShowWindow(top_child, SW_RESTORE);
428  SendMessageW( top_child, WM_SETREDRAW, TRUE, 0 );
429  }
430  }
431 
432  MDI_CalcDefaultChildPos(hWndParent, -1, mPos, 0, &id);
433 
434  if (!(dwStyle & WS_POPUP)) hMenu = UlongToHandle(id);
435 
436  if (dwStyle & (WS_CHILD | WS_POPUP))
437  {
438  if (x == CW_USEDEFAULT || x == CW_USEDEFAULT16)
439  {
440  x = mPos[0].x;
441  y = mPos[0].y;
442  }
443  if (nWidth == CW_USEDEFAULT || nWidth == CW_USEDEFAULT16 || !nWidth)
444  nWidth = mPos[1].x;
445  if (nHeight == CW_USEDEFAULT || nHeight == CW_USEDEFAULT16 || !nHeight)
446  nHeight = mPos[1].y;
447  }
448  }
449 
450  hwnd = User32CreateWindowEx(dwExStyle,
451  lpClassName,
452  lpWindowName,
453  dwStyle,
454  x,
455  y,
456  nWidth,
457  nHeight,
458  hWndParent,
459  hMenu,
460  hInstance,
461  lpParam,
462  NUCWE_ANSI);
463  return hwnd;
464 }
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_THICKFRAME
Definition: pedump.c:630
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
#define GW_CHILD
Definition: winuser.h:758
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define WARN(fmt,...)
Definition: debug.h:111
#define WM_SETREDRAW
Definition: winuser.h:1598
#define CW_USEDEFAULT16
Definition: undocuser.h:167
#define NUCWE_ANSI
Definition: undocuser.h:74
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define WS_CHILD
Definition: pedump.c:617
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_RESTORE
Definition: winuser.h:773
BOOL WINAPI IsZoomed(HWND hWnd)
Definition: window.c:1602
void MDI_CalcDefaultChildPos(HWND hwndClient, INT total, LPPOINT lpPos, INT delta, UINT *id)
Definition: mdi.c:309
HINSTANCE hInstance
Definition: charmap.c:20
#define WS_EX_MDICHILD
Definition: winuser.h:394
DWORD fnid
Definition: ntuser.h:673
#define CW_USEDEFAULT
Definition: winuser.h:225
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
HWND WINAPI GetWindow(HWND hWnd, UINT uCmd)
Definition: window.c:1089
#define WS_MAXIMIZEBOX
Definition: pedump.c:632
#define FNID_MDICLIENT
Definition: ntuser.h:834
#define WS_CAPTION
Definition: pedump.c:624
#define TRACE(s)
Definition: solgame.cpp:4
#define MDIS_ALLCHILDSTYLES
Definition: winuser.h:253
#define UlongToHandle(ul)
Definition: basetsd.h:97
#define LPVOID
Definition: nt_native.h:45
HWND WINAPI User32CreateWindowEx(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam, DWORD dwFlags)
Definition: window.c:152
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
#define WS_MINIMIZEBOX
Definition: pedump.c:631
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WS_POPUP
Definition: pedump.c:616
unsigned int UINT
Definition: ndis.h:50
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
BOOL WINAPI RegisterSystemControls(VOID)
Definition: regcontrol.c:70
DWORD RegisterDefaultClasses
Definition: regcontrol.c:13
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_SYSMENU
Definition: pedump.c:629
DWORD style
Definition: ntuser.h:670

◆ CreateWindowExW()

HWND WINAPI DECLSPEC_HOTPATCH CreateWindowExW ( DWORD  dwExStyle,
LPCWSTR  lpClassName,
LPCWSTR  lpWindowName,
DWORD  dwStyle,
int  x,
int  y,
int  nWidth,
int  nHeight,
HWND  hWndParent,
HMENU  hMenu,
HINSTANCE  hInstance,
LPVOID  lpParam 
)

Definition at line 473 of file window.c.

485 {
486  MDICREATESTRUCTW mdi;
487  HWND hwnd;
488 
490  {
491  ERR("CreateWindowExW RegisterSystemControls\n");
493  }
494 
495  if (dwExStyle & WS_EX_MDICHILD)
496  {
497  POINT mPos[2];
498  UINT id = 0;
499  HWND top_child;
500  PWND pWndParent;
501 
502  pWndParent = ValidateHwnd(hWndParent);
503 
504  if (!pWndParent) return NULL;
505 
506  if (pWndParent->fnid != FNID_MDICLIENT)
507  {
508  WARN("WS_EX_MDICHILD, but parent %p is not MDIClient\n", hWndParent);
509  return NULL;
510  }
511 
512  /* lpParams of WM_[NC]CREATE is different for MDI children.
513  * MDICREATESTRUCT members have the originally passed values.
514  */
515  mdi.szClass = lpClassName;
516  mdi.szTitle = lpWindowName;
517  mdi.hOwner = hInstance;
518  mdi.x = x;
519  mdi.y = y;
520  mdi.cx = nWidth;
521  mdi.cy = nHeight;
522  mdi.style = dwStyle;
523  mdi.lParam = (LPARAM)lpParam;
524 
525  lpParam = (LPVOID)&mdi;
526 
527  if (pWndParent->style & MDIS_ALLCHILDSTYLES)
528  {
529  if (dwStyle & WS_POPUP)
530  {
531  WARN("WS_POPUP with MDIS_ALLCHILDSTYLES is not allowed\n");
532  return(0);
533  }
534  dwStyle |= (WS_CHILD | WS_CLIPSIBLINGS);
535  }
536  else
537  {
538  dwStyle &= ~WS_POPUP;
539  dwStyle |= (WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION |
541  }
542 
543  top_child = GetWindow(hWndParent, GW_CHILD);
544 
545  if (top_child)
546  {
547  /* Restore current maximized child */
548  if((dwStyle & WS_VISIBLE) && IsZoomed(top_child))
549  {
550  TRACE("Restoring current maximized child %p\n", top_child);
551  SendMessageW( top_child, WM_SETREDRAW, FALSE, 0 );
552  ShowWindow(top_child, SW_RESTORE);
553  SendMessageW( top_child, WM_SETREDRAW, TRUE, 0 );
554  }
555  }
556 
557  MDI_CalcDefaultChildPos(hWndParent, -1, mPos, 0, &id);
558 
559  if (!(dwStyle & WS_POPUP)) hMenu = UlongToHandle(id);
560 
561  if (dwStyle & (WS_CHILD | WS_POPUP))
562  {
563  if (x == CW_USEDEFAULT || x == CW_USEDEFAULT16)
564  {
565  x = mPos[0].x;
566  y = mPos[0].y;
567  }
568  if (nWidth == CW_USEDEFAULT || nWidth == CW_USEDEFAULT16 || !nWidth)
569  nWidth = mPos[1].x;
570  if (nHeight == CW_USEDEFAULT || nHeight == CW_USEDEFAULT16 || !nHeight)
571  nHeight = mPos[1].y;
572  }
573  }
574 
575  hwnd = User32CreateWindowEx(dwExStyle,
576  (LPCSTR)lpClassName,
577  (LPCSTR)lpWindowName,
578  dwStyle,
579  x,
580  y,
581  nWidth,
582  nHeight,
583  hWndParent,
584  hMenu,
585  hInstance,
586  lpParam,
587  0);
588  return hwnd;
589 }
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_THICKFRAME
Definition: pedump.c:630
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
#define GW_CHILD
Definition: winuser.h:758
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define WARN(fmt,...)
Definition: debug.h:111
#define WM_SETREDRAW
Definition: winuser.h:1598
#define CW_USEDEFAULT16
Definition: undocuser.h:167
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define WS_CHILD
Definition: pedump.c:617
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_RESTORE
Definition: winuser.h:773
BOOL WINAPI IsZoomed(HWND hWnd)
Definition: window.c:1602
void MDI_CalcDefaultChildPos(HWND hwndClient, INT total, LPPOINT lpPos, INT delta, UINT *id)
Definition: mdi.c:309
HINSTANCE hInstance
Definition: charmap.c:20
#define WS_EX_MDICHILD
Definition: winuser.h:394
DWORD fnid
Definition: ntuser.h:673
#define CW_USEDEFAULT
Definition: winuser.h:225
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
HWND WINAPI GetWindow(HWND hWnd, UINT uCmd)
Definition: window.c:1089
const char * LPCSTR
Definition: xmlstorage.h:183
#define WS_MAXIMIZEBOX
Definition: pedump.c:632
#define FNID_MDICLIENT
Definition: ntuser.h:834
#define WS_CAPTION
Definition: pedump.c:624
#define TRACE(s)
Definition: solgame.cpp:4
#define MDIS_ALLCHILDSTYLES
Definition: winuser.h:253
#define UlongToHandle(ul)
Definition: basetsd.h:97
#define LPVOID
Definition: nt_native.h:45
HWND WINAPI User32CreateWindowEx(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam, DWORD dwFlags)
Definition: window.c:152
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
#define ERR(fmt,...)
Definition: debug.h:109
Definition: ntuser.h:657
#define WS_MINIMIZEBOX
Definition: pedump.c:631
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WS_POPUP
Definition: pedump.c:616
unsigned int UINT
Definition: ndis.h:50
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
BOOL WINAPI RegisterSystemControls(VOID)
Definition: regcontrol.c:70
DWORD RegisterDefaultClasses
Definition: regcontrol.c:13
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_SYSMENU
Definition: pedump.c:629
DWORD style
Definition: ntuser.h:670

Referenced by BaseWindowImpl_PrepareWindow().

◆ DeferWindowPos()

HDWP WINAPI DeferWindowPos ( HDWP  hWinPosInfo,
HWND  hWnd,
HWND  hWndInsertAfter,
int  x,
int  y,
int  cx,
int  cy,
UINT  uFlags 
)

Definition at line 595 of file window.c.

603 {
604  return NtUserDeferWindowPos(hWinPosInfo, hWnd, hWndInsertAfter, x, y, cx, cy, uFlags);
605 }
HWND hWnd
Definition: settings.c:17
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
UINT uFlags
Definition: api.c:60
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:570
HDWP NTAPI NtUserDeferWindowPos(HDWP WinPosInfo, HWND Wnd, HWND WndInsertAfter, int x, int y, int cx, int cy, UINT Flags)
Definition: winpos.c:3084
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
_Out_opt_ int * cx
Definition: commctrl.h:570

◆ DisableProcessWindowsGhosting()

VOID WINAPI DisableProcessWindowsGhosting ( VOID  )

Definition at line 2009 of file window.c.

2010 {
2012 }
EXTINLINE VOID NtUserxEnableProcessWindowGhosting(BOOL bEnable)
Definition: ntwrapper.h:801

◆ EndDeferWindowPos()

BOOL WINAPI EndDeferWindowPos ( HDWP  hWinPosInfo)

Definition at line 612 of file window.c.

613 {
614  return NtUserEndDeferWindowPosEx(hWinPosInfo, 0);
615 }
BOOL NTAPI NtUserEndDeferWindowPosEx(HDWP WinPosInfo, DWORD Unknown1)
Definition: winpos.c:3068

◆ EnumChildWindows()

BOOL WINAPI EnumChildWindows ( HWND  hWndParent,
WNDENUMPROC  lpEnumFunc,
LPARAM  lParam 
)

Definition at line 736 of file window.c.

739 {
740  if (!hWndParent)
741  {
742  return EnumWindows(lpEnumFunc, lParam);
743  }
744  return User32EnumWindows(NULL, hWndParent, lpEnumFunc, lParam, 0, TRUE);
745 }
#define TRUE
Definition: types.h:120
BOOL WINAPI EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)
Definition: window.c:766
smooth NULL
Definition: ftsmooth.c:416
static BOOL User32EnumWindows(HDESK hDesktop, HWND hWndparent, WNDENUMPROC lpfn, LPARAM lParam, DWORD dwThreadId, BOOL bChildren)
Definition: window.c:644
LPARAM lParam
Definition: combotst.c:139

◆ EnumDesktopWindows()

BOOL WINAPI EnumDesktopWindows ( HDESK  hDesktop,
WNDENUMPROC  lpfn,
LPARAM  lParam 
)

Definition at line 777 of file window.c.

780 {
781  return User32EnumWindows(hDesktop, NULL, lpfn, lParam, 0, FALSE);
782 }
smooth NULL
Definition: ftsmooth.c:416
static BOOL User32EnumWindows(HDESK hDesktop, HWND hWndparent, WNDENUMPROC lpfn, LPARAM lParam, DWORD dwThreadId, BOOL bChildren)
Definition: window.c:644
LPARAM lParam
Definition: combotst.c:139

◆ EnumThreadWindows()

BOOL WINAPI EnumThreadWindows ( DWORD  dwThreadId,
WNDENUMPROC  lpfn,
LPARAM  lParam 
)

Definition at line 752 of file window.c.

755 {
756  if (!dwThreadId)
758  return User32EnumWindows(NULL, NULL, lpfn, lParam, dwThreadId, FALSE);
759 }
smooth NULL
Definition: ftsmooth.c:416
static BOOL User32EnumWindows(HDESK hDesktop, HWND hWndparent, WNDENUMPROC lpfn, LPARAM lParam, DWORD dwThreadId, BOOL bChildren)
Definition: window.c:644
DWORD WINAPI GetCurrentThreadId(VOID)
Definition: thread.c:421
DWORD dwThreadId
Definition: fdebug.c:31
LPARAM lParam
Definition: combotst.c:139

◆ EnumWindows()

BOOL WINAPI EnumWindows ( WNDENUMPROC  lpEnumFunc,
LPARAM  lParam 
)

Definition at line 766 of file window.c.

768 {
769  return User32EnumWindows(NULL, NULL, lpEnumFunc, lParam, 0, FALSE);
770 }
smooth NULL
Definition: ftsmooth.c:416
static BOOL User32EnumWindows(HDESK hDesktop, HWND hWndparent, WNDENUMPROC lpfn, LPARAM lParam, DWORD dwThreadId, BOOL bChildren)
Definition: window.c:644
LPARAM lParam
Definition: combotst.c:139

Referenced by EnumChildWindows().

◆ FindWindowA()

HWND WINAPI FindWindowA ( LPCSTR  lpClassName,
LPCSTR  lpWindowName 
)

Definition at line 864 of file window.c.

865 {
866  //FIXME: FindWindow does not search children, but FindWindowEx does.
867  // what should we do about this?
868  return FindWindowExA (NULL, NULL, lpClassName, lpWindowName);
869 }
smooth NULL
Definition: ftsmooth.c:416
HWND WINAPI FindWindowExA(HWND hwndParent, HWND hwndChildAfter, LPCSTR lpszClass, LPCSTR lpszWindow)
Definition: window.c:789

◆ FindWindowExA()

HWND WINAPI FindWindowExA ( HWND  hwndParent,
HWND  hwndChildAfter,
LPCSTR  lpszClass,
LPCSTR  lpszWindow 
)

Definition at line 789 of file window.c.

793 {
794  LPWSTR titleW = NULL;
795  HWND hwnd = 0;
796 
797  if (lpszWindow)
798  {
799  DWORD len = MultiByteToWideChar( CP_ACP, 0, lpszWindow, -1, NULL, 0 );
800  if (!(titleW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return 0;
801  MultiByteToWideChar( CP_ACP, 0, lpszWindow, -1, titleW, len );
802  }
803 
804  if (!IS_INTRESOURCE(lpszClass))
805  {
806  WCHAR classW[256];
807  if (MultiByteToWideChar( CP_ACP, 0, lpszClass, -1, classW, sizeof(classW)/sizeof(WCHAR) ))
808  hwnd = FindWindowExW( hwndParent, hwndChildAfter, classW, titleW );
809  }
810  else
811  {
812  hwnd = FindWindowExW( hwndParent, hwndChildAfter, (LPCWSTR)lpszClass, titleW );
813  }
814 
815  HeapFree( GetProcessHeap(), 0, titleW );
816  return hwnd;
817 }
static const WCHAR classW[]
Definition: lex.c:38
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define CP_ACP
Definition: compat.h:99
smooth NULL
Definition: ftsmooth.c:416
static HWND hwndParent
Definition: cryptui.c:300
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const WCHAR titleW[]
Definition: htmlelem.c:1067
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
#define MultiByteToWideChar
Definition: compat.h:100
HWND WINAPI FindWindowExW(HWND hwndParent, HWND hwndChildAfter, LPCWSTR lpszClass, LPCWSTR lpszWindow)
Definition: window.c:824
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:394

Referenced by FindWindowA().

◆ FindWindowExW()

HWND WINAPI FindWindowExW ( HWND  hwndParent,
HWND  hwndChildAfter,
LPCWSTR  lpszClass,
LPCWSTR  lpszWindow 
)

Definition at line 824 of file window.c.

828 {
829  UNICODE_STRING ucClassName, *pucClassName = NULL;
830  UNICODE_STRING ucWindowName, *pucWindowName = NULL;
831 
832  if (IS_ATOM(lpszClass))
833  {
834  ucClassName.Length = 0;
835  ucClassName.Buffer = (LPWSTR)lpszClass;
836  pucClassName = &ucClassName;
837  }
838  else if (lpszClass != NULL)
839  {
840  RtlInitUnicodeString(&ucClassName,
841  lpszClass);
842  pucClassName = &ucClassName;
843  }
844 
845  if (lpszWindow != NULL)
846  {
847  RtlInitUnicodeString(&ucWindowName,
848  lpszWindow);
849  pucWindowName = &ucWindowName;
850  }
851 
853  hwndChildAfter,
854  pucClassName,
855  pucWindowName,
856  0);
857 }
smooth NULL
Definition: ftsmooth.c:416
static HWND hwndParent
Definition: cryptui.c:300
HWND APIENTRY NtUserFindWindowEx(HWND hwndParent, HWND hwndChildAfter, PUNICODE_STRING ucClassName, PUNICODE_STRING ucWindowName, DWORD dwUnknown)
Definition: window.c:2928
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define IS_ATOM(x)
Definition: class.h:3
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by FindWindowExA(), and FindWindowW().

◆ FindWindowW()

HWND WINAPI FindWindowW ( LPCWSTR  lpClassName,
LPCWSTR  lpWindowName 
)

Definition at line 876 of file window.c.

877 {
878  /*
879 
880  There was a FIXME here earlier, but I think it is just a documentation unclarity.
881 
882  FindWindow only searches top level windows. What they mean is that child
883  windows of other windows than the desktop can be searched.
884  FindWindowExW never does a recursive search.
885 
886  / Joakim
887  */
888 
889  return FindWindowExW(NULL, NULL, lpClassName, lpWindowName);
890 }
smooth NULL
Definition: ftsmooth.c:416
HWND WINAPI FindWindowExW(HWND hwndParent, HWND hwndChildAfter, LPCWSTR lpszClass, LPCWSTR lpszWindow)
Definition: window.c:824

◆ GetAltTabInfoA()

BOOL WINAPI GetAltTabInfoA ( HWND  hwnd,
int  iItem,
PALTTABINFO  pati,
LPSTR  pszItemText,
UINT  cchItemText 
)

Definition at line 898 of file window.c.

903 {
904  return NtUserGetAltTabInfo(hwnd,iItem,pati,(LPWSTR)pszItemText,cchItemText,TRUE);
905 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
BOOL NTAPI NtUserGetAltTabInfo(HWND hwnd, INT iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText, BOOL Ansi)
Definition: ntstubs.c:109
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ GetAltTabInfoW()

BOOL WINAPI GetAltTabInfoW ( HWND  hwnd,
int  iItem,
PALTTABINFO  pati,
LPWSTR  pszItemText,
UINT  cchItemText 
)

Definition at line 912 of file window.c.

917 {
918  return NtUserGetAltTabInfo(hwnd,iItem,pati,pszItemText,cchItemText,FALSE);
919 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL NTAPI NtUserGetAltTabInfo(HWND hwnd, INT iItem, PALTTABINFO pati, LPWSTR pszItemText, UINT cchItemText, BOOL Ansi)
Definition: ntstubs.c:109

◆ GetAncestor()

HWND WINAPI GetAncestor ( HWND  hwnd,
UINT  gaFlags 
)

Definition at line 926 of file window.c.

927 {
928  HWND Ret = NULL;
929  PWND Ancestor, Wnd;
930 
931  Wnd = ValidateHwnd(hwnd);
932  if (!Wnd)
933  return NULL;
934 
935  _SEH2_TRY
936  {
937  Ancestor = NULL;
938  switch (gaFlags)
939  {
940  case GA_PARENT:
941  if (Wnd->spwndParent != NULL)
942  Ancestor = DesktopPtrToUser(Wnd->spwndParent);
943  break;
944 
945  default:
946  /* FIXME: Call win32k for now */
947  Wnd = NULL;
948  break;
949  }
950 
951  if (Ancestor != NULL)
952  Ret = UserHMGetHandle(Ancestor);
953  }
955  {
956  /* Do nothing */
957  }
958  _SEH2_END;
959 
960  if (!Wnd) /* Fall back */
961  Ret = NtUserGetAncestor(hwnd, gaFlags);
962 
963  return Ret;
964 }
HWND APIENTRY NtUserGetAncestor(HWND hWnd, UINT Type)
Definition: window.c:3198
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
_SEH2_TRY
Definition: create.c:4250
static __inline PVOID DesktopPtrToUser(PVOID Ptr)
Definition: user_x.h:12
#define GA_PARENT
Definition: winuser.h:2742
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
struct _WND * spwndParent
Definition: ntuser.h:677
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6

◆ GetClientRect()

BOOL WINAPI GetClientRect ( HWND  hWnd,
LPRECT  lpRect 
)

Definition at line 971 of file window.c.

972 {
973  PWND Wnd = ValidateHwnd(hWnd);
974 
975  if (!Wnd) return FALSE;
976  if (Wnd->style & WS_MINIMIZED)
977  {
978  lpRect->left = lpRect->top = 0;
981  return TRUE;
982  }
983  if ( hWnd != GetDesktopWindow()) // Wnd->fnid != FNID_DESKTOP )
984  {
985 /* lpRect->left = lpRect->top = 0;
986  lpRect->right = Wnd->rcClient.right - Wnd->rcClient.left;
987  lpRect->bottom = Wnd->rcClient.bottom - Wnd->rcClient.top;
988 */
989  *lpRect = Wnd->rcClient;
990  OffsetRect(lpRect, -Wnd->rcClient.left, -Wnd->rcClient.top);
991  }
992  else
993  {
994  lpRect->left = lpRect->top = 0;
995  lpRect->right = Wnd->rcClient.right;
996  lpRect->bottom = Wnd->rcClient.bottom;
997 /* Do this until Init bug is fixed. This sets 640x480, see InitMetrics.
998  lpRect->right = GetSystemMetrics(SM_CXSCREEN);
999  lpRect->bottom = GetSystemMetrics(SM_CYSCREEN);
1000 */ }
1001  return TRUE;
1002 }
#define TRUE
Definition: types.h:120
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define SM_CXMINIMIZED
Definition: winuser.h:1010
HWND hWnd
Definition: settings.c:17
LONG top
Definition: windef.h:292
RECT rcClient
Definition: ntuser.h:681
LONG left
Definition: windef.h:291
LONG right
Definition: windef.h:293
HWND WINAPI GetDesktopWindow(VOID)
Definition: window.c:622
#define WS_MINIMIZED
Definition: undocuser.h:18
int WINAPI GetSystemMetrics(_In_ int)
#define SM_CYMINIMIZED
Definition: winuser.h:1011
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
LONG bottom
Definition: windef.h:294
DWORD style
Definition: ntuser.h:670

◆ GetDesktopWindow()

HWND WINAPI GetDesktopWindow ( VOID  )

Definition at line 622 of file window.c.

623 {
624  PWND Wnd;
625  HWND Ret = NULL;
626 
627  _SEH2_TRY
628  {
629  Wnd = GetThreadDesktopWnd();
630  if (Wnd != NULL)
631  Ret = UserHMGetHandle(Wnd);
632  }
634  {
635  /* Do nothing */
636  }
637  _SEH2_END;
638 
639  return Ret;
640 }
_SEH2_TRY
Definition: create.c:4250
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
PWND FASTCALL GetThreadDesktopWnd(VOID)
Definition: misc.c:407
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6

Referenced by _tWinMain(), AnyPopup(), CDimmedWindow::Capture(), CascadeWindows(), CenterWindow(), ClientToScreen(), clipboard_thread(), CommDlgProc(), create_dde_server(), create_dde_window(), create_directdraw(), create_parent(), create_parent_window(), createParentWindow(), DATETIME_LButtonDown(), ddraw_attach_d3d_device(), ddraw_set_swapchain_window(), DIALOG_CreateIndirect(), DIALOG_FindMsgDestination(), DlgProc(), do_wait_idle_child(), doWinMain(), DSoundRender_create(), explorer_main(), get_hwnd(), GetClientRect(), GetTopWindow(), GetWindowRect(), GUIDisplayLockedNotice(), GUIDisplaySASNotice(), GUILockedSAS(), GUILoggedOnSAS(), GUILoggedOutSAS(), HandleShutdown(), IDirectInputDevice2WImpl_SetCooperativeLevel(), ImageList_DragEnter(), ImageList_DragLeave(), init_nscontainer(), IntBroadcastSystemMessage(), IntGetWindowLong(), IsDialogMessageW(), IShellBrowserImpl_GetWindow(), IsThereAnyEffectiveWindow(), load_graphics_driver(), MapWindowPoints(), MCIAVI_mciWhere(), MCICDA_Play(), MCIQTZ_mciWhere(), CTrayWindow::MinimizeAll(), CZipExtract::CExtractSettingsPage::OnSetActive(), OnTimer(), CNotifyToolbar::OnTooltipShow(), OnTrayInitDialog(), OSK_DlgProc(), CMenuDeskBar::Popup(), queue_event(), Run(), RunControlPanel(), running_on_visible_desktop(), ScreenToClient(), set_clipboard_thread(), shellbrowser_GetWindow(), ShowStatusMessageThread(), START_TEST(), StartupWindowThread(), SysMouseWImpl_Acquire(), test_bad_control_class(), test_buttons(), test_clipboard_viewers(), test_ClipboardOwner(), test_create_window(), test_CreateWindow(), test_CShellMenu_with_DeskBar(), test_custom_default_button(), test_data_handles(), test_deferwindowpos(), test_DeleteDC(), test_DestroyWindow(), test_dialog_parent(), test_disableowner(), test_fullscreen(), test_GetRandomRgn(), test_gettext(), test_GetWindowModuleFileName(), test_hwnd_message(), test_ImmThreads(), test_InternetErrorDlg(), test_IsWindowUnicode(), test_killfocus(), test_marshal_HWND(), test_mdi(), test_mdi_messages(), test_messages(), test_nopage(), Test_OneParamRoutine_MapDesktopObject(), Test_OneParamRoutine_WindowFromDC(), test_parent_owner(), test_PrintDlgExW(), test_PSM_ADDPAGE(), test_PSM_INSERTPAGE(), test_RunControlPanel(), test_SetFocus(), test_SetForegroundWindow(), test_SetParent(), test_SetWindowPos(), test_title(), test_token_security_descriptor(), test_wiznavigation(), ThemePreWindowProc(), thread(), TileWindows(), TREEVIEW_CreateDragImage(), WinMain(), WINTRUST_CertVerify(), WINTRUST_DefaultVerify(), WndProc(), and wWinMain().

◆ GetFocus()

HWND WINAPI GetFocus ( VOID  )

Definition at line 1875 of file window.c.

1876 {
1878 }
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
Definition: misc.c:231

Referenced by _CmdWndProc(), _tWinMain(), check_active_state_(), check_wnd_state_(), ChildWndProc(), Client_get_accState(), COMBOEX_ComboWndProc(), FileChildWindow::Command(), CredDialogInit(), DEFDLG_Proc(), DEFDLG_SaveFocus(), delayFocusDlgWinProc(), DlgMainProc(), edit_dialog_proc(), edit_singleline_dialog_proc(), edit_wantreturn_dialog_proc(), EDIT_WM_NCPaint(), EndDialog(), CBrandBand::HasFocusIO(), CAddressBand::HasFocusIO(), ImmCreateContext(), ImmInternalPostIMEMessage(), ImmInternalSendIMEMessage(), ImmInternalSendIMENotify(), IntDrawScrollBar(), IntScrollHandleScrollEvent(), IPADDRESS_Draw(), is_doc_child_focus(), IsDialogMessageW(), IShellBrowserImpl_BrowseObject(), make_new_folder_timer_callback(), MsgCheckProcA(), MSIDialog_WndProc(), multi_edit_dialog_proc(), nc_paint(), OnTimer(), paint_text(), PROPSHEET_SetWizButtons(), SCROLL_HandleScrollEvent(), set_focus_on_activate_proc(), TAB_DrawItemInterior(), test_accelerators(), test_attach_input(), test_autoradio_kbd_move(), test_button_messages(), test_capture_2(), test_combo_editselection_focus(), test_comboex_WM_LBUTTONDOWN(), test_dialog_messages(), test_editbox(), test_editselection_focus(), test_focus(), test_IsDialogMessage(), test_keyboard_input(), test_LVN_ENDLABELEDIT(), test_mdi_messages(), test_messages(), test_SaveRestoreFocus(), test_SetFocus(), test_SetForegroundWindow(), test_wiznavigation(), test_WM_LBUTTONDOWN(), test_WM_NEXTDLGCTL(), ThreadMgr_AssociateFocus(), ThreadMgr_IsThreadFocus(), TreeListKeyDown(), TreeListMouseClick(), TREEVIEW_DrawItem(), Win32ErrorHandler(), Win32WarningHandler(), FileChildWindow::WndProc(), StartMenuButton::WndProc(), and WndProc().

◆ GetLastActivePopup()

HWND WINAPI GetLastActivePopup ( HWND  hWnd)

Definition at line 1009 of file window.c.

1010 {
1011  PWND Wnd;
1012  HWND Ret = hWnd;
1013 
1014  Wnd = ValidateHwnd(hWnd);
1015  if (Wnd != NULL)
1016  {
1017  _SEH2_TRY
1018  {
1019  if (Wnd->spwndLastActive)
1020  {
1021  PWND LastActive = DesktopPtrToUser(Wnd->spwndLastActive);
1022  Ret = UserHMGetHandle(LastActive);
1023  }
1024  }
1026  {
1027  /* Do nothing */
1028  }
1029  _SEH2_END;
1030  }
1031  return Ret;
1032 }
HWND hWnd
Definition: settings.c:17
_SEH2_TRY
Definition: create.c:4250
static __inline PVOID DesktopPtrToUser(PVOID Ptr)
Definition: user_x.h:12
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
struct _WND * spwndLastActive
Definition: ntuser.h:703
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6

◆ GetParent()

HWND WINAPI GetParent ( HWND  hWnd)

Definition at line 1039 of file window.c.

1040 {
1041  PWND Wnd, WndParent;
1042  HWND Ret = NULL;
1043 
1044  Wnd = ValidateHwnd(hWnd);
1045  if (Wnd != NULL)
1046  {
1047  _SEH2_TRY
1048  {
1049  WndParent = NULL;
1050  if (Wnd->style & WS_POPUP)
1051  {
1052  if (Wnd->spwndOwner != NULL)
1053  WndParent = DesktopPtrToUser(Wnd->spwndOwner);
1054  }
1055  else if (Wnd->style & WS_CHILD)
1056  {
1057  if (Wnd->spwndParent != NULL)
1058  WndParent = DesktopPtrToUser(Wnd->spwndParent);
1059  }
1060 
1061  if (WndParent != NULL)
1062  Ret = UserHMGetHandle(WndParent);
1063  }
1065  {
1066  /* Do nothing */
1067  }
1068  _SEH2_END;
1069  }
1070 
1071  return Ret;
1072 }
HWND hWnd
Definition: settings.c:17
#define WS_CHILD
Definition: pedump.c:617
_SEH2_TRY
Definition: create.c:4250
static __inline PVOID DesktopPtrToUser(PVOID Ptr)
Definition: user_x.h:12
struct _WND * spwndOwner
Definition: ntuser.h:679
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
#define WS_POPUP
Definition: pedump.c:616
struct _WND * spwndParent
Definition: ntuser.h:677
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
DWORD style
Definition: ntuser.h:670

◆ GetProcessDefaultLayout()

BOOL WINAPI GetProcessDefaultLayout ( DWORD pdwDefaultLayout)

Definition at line 1079 of file window.c.

1080 {
1082 }
DWORD_PTR NTAPI NtUserCallOneParam(DWORD_PTR Param, DWORD Routine)
Definition: simplecall.c:145
unsigned int BOOL
Definition: ntddk_ex.h:94
uint32_t DWORD_PTR
Definition: typedefs.h:63

◆ GetProgmanWindow()

HWND WINAPI GetProgmanWindow ( VOID  )

Definition at line 1908 of file window.c.

1909 {
1911 }
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
Definition: misc.c:231

◆ GetRealWindowOwner()

DWORD WINAPI GetRealWindowOwner ( HWND  hwnd)

Definition at line 1881 of file window.c.

1882 {
1884 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define QUERY_WINDOW_REAL_ID
Definition: ntuser.h:2801
DWORD_PTR APIENTRY NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:3982

Referenced by ResetUserApiHook().

◆ GetTaskmanWindow()

HWND WINAPI GetTaskmanWindow ( VOID  )

Definition at line 1917 of file window.c.

1918 {
1920 }
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
Definition: misc.c:231

Referenced by UserpShowInformationBalloon().

◆ GetTopWindow()

HWND WINAPI GetTopWindow ( HWND  hWnd)

Definition at line 1160 of file window.c.

1161 {
1162  if (!hWnd) hWnd = GetDesktopWindow();
1163  return GetWindow(hWnd, GW_CHILD);
1164 }
#define GW_CHILD
Definition: winuser.h:758
HWND hWnd
Definition: settings.c:17
HWND WINAPI GetDesktopWindow(VOID)
Definition: window.c:622
HWND WINAPI GetWindow(HWND hWnd, UINT uCmd)
Definition: window.c:1089

◆ GetWindow()

HWND WINAPI GetWindow ( HWND  hWnd,
UINT  uCmd 
)

Definition at line 1089 of file window.c.

1091 {
1092  PWND Wnd, FoundWnd;
1093  HWND Ret = NULL;
1094 
1095  Wnd = ValidateHwnd(hWnd);
1096  if (!Wnd)
1097  return NULL;
1098 
1099  _SEH2_TRY
1100  {
1101  FoundWnd = NULL;
1102  switch (uCmd)
1103  {
1104  case GW_OWNER:
1105  if (Wnd->spwndOwner != NULL)
1106  FoundWnd = DesktopPtrToUser(Wnd->spwndOwner);
1107  break;
1108 
1109  case GW_HWNDFIRST:
1110  if(Wnd->spwndParent != NULL)
1111  {
1112  FoundWnd = DesktopPtrToUser(Wnd->spwndParent);
1113  if (FoundWnd->spwndChild != NULL)
1114  FoundWnd = DesktopPtrToUser(FoundWnd->spwndChild);
1115  }
1116  break;
1117  case GW_HWNDNEXT:
1118  if (Wnd->spwndNext != NULL)
1119  FoundWnd = DesktopPtrToUser(Wnd->spwndNext);
1120  break;
1121 
1122  case GW_HWNDPREV:
1123  if (Wnd->spwndPrev != NULL)
1124  FoundWnd = DesktopPtrToUser(Wnd->spwndPrev);
1125  break;
1126 
1127  case GW_CHILD:
1128  if (Wnd->spwndChild != NULL)
1129  FoundWnd = DesktopPtrToUser(Wnd->spwndChild);
1130  break;
1131 
1132  case GW_HWNDLAST:
1133  FoundWnd = Wnd;
1134  while ( FoundWnd->spwndNext != NULL)
1135  FoundWnd = DesktopPtrToUser(FoundWnd->spwndNext);
1136  break;
1137 
1138  default:
1139  Wnd = NULL;
1140  break;
1141  }
1142 
1143  if (FoundWnd != NULL)
1144  Ret = UserHMGetHandle(FoundWnd);
1145  }
1147  {
1148  /* Do nothing */
1149  }
1150  _SEH2_END;
1151 
1152  return Ret;
1153 }
#define GW_HWNDNEXT
Definition: winuser.h:756
#define GW_CHILD
Definition: winuser.h:758
HWND hWnd
Definition: settings.c:17
_SEH2_TRY
Definition: create.c:4250
static __inline PVOID DesktopPtrToUser(PVOID Ptr)
Definition: user_x.h:12
struct _WND * spwndOwner
Definition: ntuser.h:679
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
struct _WND * spwndNext
Definition: ntuser.h:675
#define UserHMGetHandle(obj)
Definition: ntuser.h:208
#define GW_HWNDLAST
Definition: winuser.h:760
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
#define GW_HWNDFIRST
Definition: winuser.h:759
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
#define GW_OWNER
Definition: winuser.h:761
struct _WND * spwndParent
Definition: ntuser.h:677
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
struct _WND * spwndChild
Definition: ntuser.h:678
#define GW_HWNDPREV
Definition: winuser.h:757
struct _WND * spwndPrev
Definition: ntuser.h:676

Referenced by AnyPopup(), CreateWindowExA(), CreateWindowExW(), and GetTopWindow().

◆ GetWindowContextHelpId()

DWORD WINAPI GetWindowContextHelpId ( HWND  hwnd)

Definition at line 1821 of file window.c.

1822 {
1824 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
EXTINLINE DWORD NtUserxGetWindowContextHelpId(HWND hwnd)
Definition: ntwrapper.h:726

◆ GetWindowInfo()

BOOL WINAPI DECLSPEC_HOTPATCH GetWindowInfo ( HWND  hWnd,
PWINDOWINFO  pwi 
)

Definition at line 1173 of file window.c.

1175 {
1176  PWND pWnd;
1177  PCLS pCls = NULL;
1178  SIZE Size = {0,0};
1179  BOOL Ret = FALSE;
1180 
1181  if ( !pwi || pwi->cbSize != sizeof(WINDOWINFO))
1182  SetLastError(ERROR_INVALID_PARAMETER); // Just set the error and go!
1183 
1184  pWnd = ValidateHwnd(hWnd);
1185  if (!pWnd)
1186  return Ret;
1187 
1188  UserGetWindowBorders(pWnd->style, pWnd->ExStyle, &Size, FALSE);
1189 
1190  _SEH2_TRY
1191  {
1192  pCls = DesktopPtrToUser(pWnd->pcls);
1193  pwi->rcWindow = pWnd->rcWindow;
1194  pwi->rcClient = pWnd->rcClient;
1195  pwi->dwStyle = pWnd->style;
1196  pwi->dwExStyle = pWnd->ExStyle;
1197  pwi->cxWindowBorders = Size.cx;
1198  pwi->cyWindowBorders = Size.cy;
1199  pwi->dwWindowStatus = 0;
1200  if (pWnd->state & WNDS_ACTIVEFRAME || (GetActiveWindow() == hWnd))
1202  pwi->atomWindowType = (pCls ? pCls->atomClassName : 0 );
1203 
1204  if ( pWnd->state2 & WNDS2_WIN50COMPAT )
1205  {
1206  pwi->wCreatorVersion = 0x500;
1207  }
1208  else if ( pWnd->state2 & WNDS2_WIN40COMPAT )
1209  {
1210  pwi->wCreatorVersion = 0x400;
1211  }
1212  else if ( pWnd->state2 & WNDS2_WIN31COMPAT )
1213  {
1214  pwi->wCreatorVersion = 0x30A;
1215  }
1216  else
1217  {
1218  pwi->wCreatorVersion = 0x300;
1219  }
1220 
1221  Ret = TRUE;
1222  }
1224  {
1225  /* Do nothing */
1226  }
1227  _SEH2_END;
1228 
1229  return Ret;
1230 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
DWORD ExStyle
Definition: ntuser.h:668
#define TRUE
Definition: types.h:120
DWORD cbSize
Definition: winuser.h:3708
#define WS_ACTIVECAPTION
Definition: winuser.h:2613
DWORD dwStyle
Definition: winuser.h:3711
UINT cxWindowBorders
Definition: winuser.h:3714
VOID UserGetWindowBorders(DWORD Style, DWORD ExStyle, SIZE *Size, BOOL WithClient)
Definition: winpos.c:885
HWND hWnd
Definition: settings.c:17
UINT cyWindowBorders
Definition: winuser.h:3715
WORD wCreatorVersion
Definition: winuser.h:3717
RECT rcClient
Definition: ntuser.h:681
ATOM atomWindowType
Definition: winuser.h:3716
RTL_ATOM atomClassName
Definition: ntuser.h:536
_SEH2_TRY
Definition: create.c:4250
static __inline PVOID DesktopPtrToUser(PVOID Ptr)
Definition: user_x.h:12
unsigned int BOOL
Definition: ntddk_ex.h:94
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
Definition: ntuser.h:533
RECT rcWindow
Definition: winuser.h:3709
DWORD dwExStyle
Definition: winuser.h:3712
DWORD dwWindowStatus
Definition: winuser.h:3713
#define SetLastError(x)
Definition: compat.h:409
#define WNDS2_WIN50COMPAT
Definition: ntuser.h:619
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
#define WNDS_ACTIVEFRAME
Definition: ntuser.h:579
RECT rcWindow
Definition: ntuser.h:680
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
DWORD state
Definition: ntuser.h:665
#define WNDS2_WIN31COMPAT
Definition: ntuser.h:617
DWORD state2
Definition: ntuser.h:666
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
RECT rcClient
Definition: winuser.h:3710
#define WNDS2_WIN40COMPAT
Definition: ntuser.h:618
HWND WINAPI GetActiveWindow(void)
Definition: winpos.c:137
PCLS pcls
Definition: ntuser.h:684
DWORD style
Definition: ntuser.h:670

◆ GetWindowModuleFileNameA()

UINT WINAPI GetWindowModuleFileNameA ( HWND  hwnd,
LPSTR  lpszFileName,
UINT  cchFileNameMax 
)

Definition at line 1237 of file window.c.

1240 {
1241  PWND Wnd = ValidateHwnd(hwnd);
1242 
1243  if (!Wnd)
1244  return 0;
1245 
1246  return GetModuleFileNameA(Wnd->hModule, lpszFileName, cchFileNameMax);
1247 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
HINSTANCE hModule
Definition: ntuser.h:672
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
Definition: loader.c:546
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657

◆ GetWindowModuleFileNameW()

UINT WINAPI GetWindowModuleFileNameW ( HWND  hwnd,
LPWSTR  lpszFileName,
UINT  cchFileNameMax 
)

Definition at line 1254 of file window.c.

1257 {
1258  PWND Wnd = ValidateHwnd(hwnd);
1259 
1260  if (!Wnd)
1261  return 0;
1262 
1263  return GetModuleFileNameW( Wnd->hModule, lpszFileName, cchFileNameMax );
1264 }
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:607
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
HINSTANCE hModule
Definition: ntuser.h:672
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657

◆ GetWindowRect()

BOOL WINAPI GetWindowRect ( HWND  hWnd,
LPRECT  lpRect 
)

Definition at line 1270 of file window.c.

1272 {
1273  PWND Wnd = ValidateHwnd(hWnd);
1274 
1275  if (!Wnd) return FALSE;
1276  if ( hWnd != GetDesktopWindow()) // Wnd->fnid != FNID_DESKTOP )
1277  {
1278  *lpRect = Wnd->rcWindow;
1279  }
1280  else
1281  {
1282  lpRect->left = lpRect->top = 0;
1283  lpRect->right = Wnd->rcWindow.right;
1284  lpRect->bottom = Wnd->rcWindow.bottom;
1285 /* Do this until Init bug is fixed. This sets 640x480, see InitMetrics.
1286  lpRect->right = GetSystemMetrics(SM_CXSCREEN);
1287  lpRect->bottom = GetSystemMetrics(SM_CYSCREEN);
1288 */ }
1289  return TRUE;
1290 }
#define TRUE
Definition: types.h:120
HWND hWnd
Definition: settings.c:17
LONG top
Definition: windef.h:292
LONG left
Definition: windef.h:291
LONG right
Definition: windef.h:293
HWND WINAPI GetDesktopWindow(VOID)
Definition: window.c:622
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
RECT rcWindow
Definition: ntuser.h:680
Definition: ntuser.h:657
LONG bottom
Definition: windef.h:294

Referenced by BaseControlWindowImpl_get_Left(), BaseControlWindowImpl_get_Top(), BaseControlWindowImpl_GetWindowPosition(), BaseControlWindowImpl_put_Left(), and BaseControlWindowImpl_put_Top().

◆ GetWindowTextA()

int WINAPI GetWindowTextA ( HWND  hWnd,
LPSTR  lpString,
int  nMaxCount 
)

Definition at line 1296 of file window.c.

1297 {
1298  PWND Wnd;
1299  INT Length = 0;
1300 
1301  if (lpString == NULL || nMaxCount == 0)
1302  return 0;
1303 
1304  Wnd = ValidateHwnd(hWnd);
1305  if (!Wnd)
1306  return 0;
1307 
1308  lpString[0] = '\0';
1309 
1310  if (!TestWindowProcess(Wnd))
1311  {
1312  _SEH2_TRY
1313  {
1315  }
1317  {
1318  Length = 0;
1319  }
1320  _SEH2_END;
1321  }
1322  else
1323  {
1325  }
1326  //ERR("GWTA Len %d : %s\n",Length,lpString);
1327  return Length;
1328 }
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_GETTEXT
Definition: winuser.h:1600
HWND hWnd
Definition: settings.c:17
BOOL FASTCALL TestWindowProcess(PWND)
Definition: misc.c:176
int32_t INT
Definition: typedefs.h:56
_SEH2_TRY
Definition: create.c:4250
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
_In_ int nMaxCount
Definition: winuser.h:4746

Referenced by CC_CheckDigitsInEdit(), Child_WndProc(), ET2_check_change(), formatopts_proc(), GetDlgItemTextA(), gettext_msg_thread(), LISTVIEW_EndEditLabelT(), msgbox_hook_proc(), NPS_ProxyPasswordDialog(), page_dlg_proc(), set_foreground(), sheet_callback(), test_aw_conversion_dlgproc(), test_aw_conversion_dlgproc2(), test_create(), test_defwinproc(), test_dtm_set_format(), test_edit_control_2(), test_fontsize(), test_foregroundwindow(), test_get_set_text(), test_gettext(), test_ImmDefaultHwnd(), test_itemedit(), test_params(), test_set_text(), test_UDS_SETBUDDYINT(), test_updown_base(), test_updown_create(), test_WM_CREATE(), TestControlStyleDlgProc(), TREEVIEW_EndEditLabelNow(), and WinMain().

◆ GetWindowTextLengthA()

int WINAPI GetWindowTextLengthA ( HWND  hWnd)

Definition at line 1334 of file window.c.

1335 {
1336  PWND Wnd;
1337 
1338  Wnd = ValidateHwnd(hWnd);
1339  if (!Wnd)
1340  return 0;
1341 
1342  if (!TestWindowProcess(Wnd))
1343  {
1344  return DefWindowProcA(hWnd, WM_GETTEXTLENGTH, 0, 0);
1345  }
1346  else
1347  {
1348  return SendMessageA(hWnd, WM_GETTEXTLENGTH, 0, 0);
1349  }
1350 }
#define WM_GETTEXTLENGTH
Definition: winuser.h:1601
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND hWnd
Definition: settings.c:17
BOOL FASTCALL TestWindowProcess(PWND)
Definition: misc.c:176
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
Definition: ntuser.h:657

◆ GetWindowTextLengthW()

int WINAPI GetWindowTextLengthW ( HWND  hWnd)

Definition at line 1356 of file window.c.

1357 {
1358  PWND Wnd;
1359 
1360  Wnd = ValidateHwnd(hWnd);
1361  if (!Wnd)
1362  return 0;
1363 
1364  if (!TestWindowProcess(Wnd))
1365  {
1366  return DefWindowProcW(hWnd, WM_GETTEXTLENGTH, 0, 0);
1367  }
1368  else
1369  {
1370  return SendMessageW(hWnd, WM_GETTEXTLENGTH, 0, 0);
1371  }
1372 }
#define WM_GETTEXTLENGTH
Definition: winuser.h:1601
HWND hWnd
Definition: settings.c:17
BOOL FASTCALL TestWindowProcess(PWND)
Definition: misc.c:176
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

◆ GetWindowTextW()

int WINAPI GetWindowTextW ( HWND  hWnd,
LPWSTR  lpString,
int  nMaxCount 
)

Definition at line 1378 of file window.c.

1379 {
1380  PWND Wnd;
1381  INT Length = 0;
1382 
1383  if (lpString == NULL || nMaxCount == 0)
1384  return 0;
1385 
1386  Wnd = ValidateHwnd(hWnd);
1387  if (!Wnd)
1388  return 0;
1389 
1390  lpString[0] = L'\0';
1391 
1392  if (!TestWindowProcess(Wnd))
1393  {
1394  _SEH2_TRY
1395  {
1397  }
1399  {
1400  Length = 0;
1401  }
1402  _SEH2_END;
1403  }
1404  else
1405  {
1407  }
1408  //ERR("GWTW Len %d : %S\n",Length,lpString);
1409  return Length;
1410 }
#define WM_GETTEXT
Definition: winuser.h:1600
HWND hWnd
Definition: settings.c:17
BOOL FASTCALL TestWindowProcess(PWND)
Definition: misc.c:176
int32_t INT
Definition: typedefs.h:56
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
_SEH2_TRY
Definition: create.c:4250
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
static const WCHAR L[]
Definition: oid.c:1250
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
_In_ int nMaxCount
Definition: winuser.h:4746

Referenced by AboutDlgProc(), CAutoComplete::ACEditSubclassProc(), AddressBarProc(), AtlAxWin_wndproc(), BaseControlWindowImpl_get_Caption(), CBUpdateLBox(), COMBOEX_ComboWndProc(), COMBOEX_Command(), COMBOEX_DrawItem(), COMBOEX_EditWndProc(), CompleteSwitch(), CredDialogCommandOk(), DestinationDlgProc(), DIALOG_IsAccelerator(), CDownloadManager::DownloadDlgProc(), EnableOkButtonFromEditContents(), EndNowDlgProc(), EnumWindowsProc(), ExportRegistryFile_OFNHookProc(), FILEDLG95_FILENAME_GetFileNames(), FilterDialogDlgProc(), find_control(), find_top_window(), find_window_callback(), FindDialogProc(), FontProc(), FontSizeList_GetSelectedFontSize(), FontWndProc(), get_button_text(), GetDlgItemTextW(), GetStringFromDialog(), GetTextboxText(), CUiWindow< CStatusBar >::GetWindowTextW(), hyperlink_dlgproc(), ICONTITLE_Paint(), ICONTITLE_SetTitlePos(), ie_dialog_open_proc(), InitializeChkDskDialog(), InitializeFormatDriveDlg(), IPADDRESS_ConstrainField(), IPADDRESS_GetAddress(), IPADDRESS_SubclassProc(), IPADDRESS_UpdateText(), IsThereAnyEffectiveWindow(), LabelWndProc(), LISTVIEW_Command(), LISTVIEW_EditLabelT(), LISTVIEW_EndEditLabelT(), MDI_UpdateFrameText(), MessageBoxTextToClipboard(), modify_dword_dlgproc(), modify_multi_string_dlgproc(), modify_string_dlgproc(), msi_get_window_text(), msi_mask_control_change(), OnCommand(), OnPaint(), CAddressBand::OnTipText(), paraformat_proc(), PrepareFoldersToScan(), prompt_dlgproc(), promptdisk_ok(), PropertiesDialogDlgProc(), PROPSHEET_DialogProc(), RunDlgProc(), BtrfsBalance::SaveBalanceOpts(), SaveCustomPath(), anonymous_namespace{settingsdlg.cpp}::SettingsDlgProc(), SetWelcomeText(), tabstops_proc(), TcpipFilterPortDlg(), test_aw_conversion_dlgproc(), test_aw_conversion_dlgproc2(), test_gettext(), TREEVIEW_Command(), TREEVIEW_EndEditLabelNow(), UPDOWN_GetBuddyInt(), UPDOWN_SetBuddyInt(), UserpFormatMessages(), ValidateEditContents(), WININET_GetSetPassword(), WININET_PasswordDialog(), WININET_ProxyPasswordDialog(), and WinMain().

◆ GetWindowThreadProcessId()

DWORD WINAPI GetWindowThreadProcessId ( HWND  hWnd,
LPDWORD  lpdwProcessId 
)

Definition at line 1413 of file window.c.

1415 {
1416  DWORD Ret = 0;
1417  PTHREADINFO ti;
1418  PWND pWnd = ValidateHwnd(hWnd);
1419 
1420  if (!pWnd) return Ret;
1421 
1422  ti = pWnd->head.pti;
1423 
1424  if (ti)
1425  {
1426  if (ti == GetW32ThreadInfo())
1427  { // We are current.
1428  //FIXME("Current!\n");
1429  if (lpdwProcessId)
1430  *lpdwProcessId = (DWORD_PTR)NtCurrentTeb()->ClientId.UniqueProcess;
1431  Ret = (DWORD_PTR)NtCurrentTeb()->ClientId.UniqueThread;
1432  }
1433  else
1434  { // Ask kernel for info.
1435  //FIXME("Kernel call!\n");
1436  if (lpdwProcessId)
1439  }
1440  }
1441  return Ret;
1442 }
#define QUERY_WINDOW_UNIQUE_THREAD_ID
Definition: ntuser.h:2797
#define QUERY_WINDOW_UNIQUE_PROCESS_ID
Definition: ntuser.h:2796
#define DWORD_PTR
Definition: treelist.c:76
HWND hWnd
Definition: settings.c:17
DWORD_PTR APIENTRY NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:3982
struct _THREADINFO * GetW32ThreadInfo(VOID)
Definition: misc.c:783
THRDESKHEAD head
Definition: ntuser.h:659
unsigned long DWORD
Definition: ntddk_ex.h:95
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
Definition: psfuncs.h:420

◆ InternalGetWindowText()

int WINAPI InternalGetWindowText ( HWND  hWnd,
LPWSTR  lpString,
int  nMaxCount 
)

Definition at line 1830 of file window.c.

1831 {
1832  INT Ret = NtUserInternalGetWindowText(hWnd, lpString, nMaxCount);
1833  if (Ret == 0 && lpString)
1834  *lpString = L'\0';
1835  return Ret;
1836 }
HWND hWnd
Definition: settings.c:17
int32_t INT
Definition: typedefs.h:56
INT APIENTRY NtUserInternalGetWindowText(HWND hWnd, LPWSTR lpString, INT nMaxCount)
Definition: window.c:4364
static const WCHAR L[]
Definition: oid.c:1250
_In_ int nMaxCount
Definition: winuser.h:4746

◆ IsChild()

BOOL WINAPI IsChild ( HWND  hWndParent,
HWND  hWnd 
)

Definition at line 1449 of file window.c.

1451 {
1452  PWND WndParent, DesktopWnd, Wnd;
1453  BOOL Ret = FALSE;
1454 
1455  WndParent = ValidateHwnd(hWndParent);
1456  if (!WndParent)
1457  return FALSE;
1458  Wnd = ValidateHwnd(hWnd);
1459  if (!Wnd)
1460  return FALSE;
1461 
1462  DesktopWnd = GetThreadDesktopWnd();
1463  if (!DesktopWnd)
1464  return FALSE;
1465 
1466  _SEH2_TRY
1467  {
1468  while (Wnd != NULL && ((Wnd->style & (WS_POPUP|WS_CHILD)) == WS_CHILD))
1469  {
1470  if (Wnd->spwndParent != NULL)
1471  {
1472  Wnd = DesktopPtrToUser(Wnd->spwndParent);
1473 
1474  if (Wnd == WndParent)
1475  {
1476  Ret = TRUE;
1477  break;
1478  }
1479  }
1480  else
1481  break;
1482  }
1483  }
1485  {
1486  /* Do nothing */
1487  }
1488  _SEH2_END;
1489 
1490  return Ret;
1491 }
#define TRUE
Definition: types.h:120
HWND hWnd
Definition: settings.c:17
#define WS_CHILD
Definition: pedump.c:617
_SEH2_TRY
Definition: create.c:4250
static __inline PVOID DesktopPtrToUser(PVOID Ptr)
Definition: user_x.h:12
unsigned int BOOL
Definition: ntddk_ex.h:94
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
#define WS_POPUP
Definition: pedump.c:616
PWND FASTCALL GetThreadDesktopWnd(VOID)
Definition: misc.c:407
struct _WND * spwndParent
Definition: ntuser.h:677
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
DWORD style
Definition: ntuser.h:670

◆ IsHungAppWindow()

BOOL WINAPI IsHungAppWindow ( HWND  hwnd)

Definition at line 1842 of file window.c.

1843 {
1844  PWND Window;
1845  UNICODE_STRING ClassName;
1846  WCHAR szClass[16];
1847  static const UNICODE_STRING GhostClass = RTL_CONSTANT_STRING(L"Ghost");
1848 
1849  /* Ghost is a hung window */
1850  RtlInitEmptyUnicodeString(&ClassName, szClass, sizeof(szClass));
1852  if (Window && Window->fnid == FNID_GHOST &&
1853  NtUserGetClassName(hwnd, FALSE, &ClassName) &&
1854  RtlEqualUnicodeString(&ClassName, &GhostClass, TRUE))
1855  {
1856  return TRUE;
1857  }
1858 
1859  return (NtUserQueryWindow(hwnd, QUERY_WINDOW_ISHUNG) != 0);
1860 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
DWORD_PTR APIENTRY NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:3982
Definition: window.c:29
__wchar_t WCHAR
Definition: xmlstorage.h:180
int Window
Definition: x11stubs.h:26
#define QUERY_WINDOW_ISHUNG
Definition: ntuser.h:2800
static const WCHAR L[]
Definition: oid.c:1250
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
#define FNID_GHOST
Definition: ntuser.h:837
INT NTAPI NtUserGetClassName(HWND hWnd, BOOL Real, PUNICODE_STRING ClassName)
static UNICODE_STRING GhostClass
Definition: ghost.c:16
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define RTL_CONSTANT_STRING(s)
Definition: tunneltest.c:14

Referenced by EnumWindowsProc(), Ghost_OnCreate(), and Ghost_OnTimer().

◆ IsIconic()

BOOL WINAPI IsIconic ( HWND  hWnd)

Definition at line 1498 of file window.c.

1499 {
1500  PWND Wnd = ValidateHwnd(hWnd);
1501 
1502  if (Wnd != NULL)
1503  return (Wnd->style & WS_MINIMIZE) != 0;
1504 
1505  return FALSE;
1506 }
HWND hWnd
Definition: settings.c:17
#define WS_MINIMIZE
Definition: pedump.c:622
smooth NULL
Definition: ftsmooth.c:416
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
DWORD style
Definition: ntuser.h:670

◆ IsWindow()

BOOL WINAPI IsWindow ( HWND  hWnd)

Definition at line 1513 of file window.c.

1514 {
1515  PWND Wnd = ValidateHwndNoErr(hWnd);
1516  if (Wnd != NULL)
1517  {
1518  if (Wnd->state & WNDS_DESTROYED ||
1519  Wnd->state2 & WNDS2_INDESTROY)
1520  return FALSE;
1521  return TRUE;
1522  }
1523 
1524  return FALSE;
1525 }
#define TRUE
Definition: types.h:120
PWND FASTCALL ValidateHwndNoErr(HWND hWnd)
Definition: window.c:96
HWND hWnd
Definition: settings.c:17
smooth NULL
Definition: ftsmooth.c:416
Definition: ntuser.h:657
DWORD state
Definition: ntuser.h:665
DWORD state2
Definition: ntuser.h:666
#define WNDS_DESTROYED
Definition: ntuser.h:604
#define WNDS2_INDESTROY
Definition: ntuser.h:616

Referenced by AnimateWindow(), and create_window_object().

◆ IsWindowEnabled()

BOOL WINAPI IsWindowEnabled ( HWND  hWnd)

Definition at line 1588 of file window.c.

1589 {
1590  // AG: I don't know if child windows are affected if the parent is
1591  // disabled. I think they stop processing messages but stay appearing
1592  // as enabled.
1593 
1595 }
#define WS_DISABLED
Definition: pedump.c:621
HWND hWnd
Definition: settings.c:17
#define GetWindowLongPtrW
Definition: winuser.h:4698
#define GWL_STYLE
Definition: winuser.h:846

◆ IsWindowInDestroy()

BOOL WINAPI IsWindowInDestroy ( HWND  hWnd)

Definition at line 1996 of file window.c.

1997 {
1998  PWND pwnd;
1999  pwnd = ValidateHwnd(hWnd);
2000  if (!pwnd)
2001  return FALSE;
2002  return ((pwnd->state2 & WNDS2_INDESTROY) == WNDS2_INDESTROY);
2003 }
HWND hWnd
Definition: settings.c:17
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
DWORD state2
Definition: ntuser.h:666
#define WNDS2_INDESTROY
Definition: ntuser.h:616

◆ IsWindowUnicode()

BOOL WINAPI IsWindowUnicode ( HWND  hWnd)

Definition at line 1532 of file window.c.

1533 {
1534  PWND Wnd = ValidateHwnd(hWnd);
1535 
1536  if (Wnd != NULL)
1537  return Wnd->Unicode;
1538 
1539  return FALSE;
1540 }
HWND hWnd
Definition: settings.c:17
smooth NULL
Definition: ftsmooth.c:416
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
UINT Unicode
Definition: ntuser.h:720

◆ IsWindowVisible()

BOOL WINAPI IsWindowVisible ( HWND  hWnd)

Definition at line 1547 of file window.c.

1548 {
1549  BOOL Ret = FALSE;
1550  PWND Wnd = ValidateHwnd(hWnd);
1551 
1552  if (Wnd != NULL)
1553  {
1554  _SEH2_TRY
1555  {
1556  Ret = TRUE;
1557 
1558  do
1559  {
1560  if (!(Wnd->style & WS_VISIBLE))
1561  {
1562  Ret = FALSE;
1563  break;
1564  }
1565 
1566  if (Wnd->spwndParent != NULL)
1567  Wnd = DesktopPtrToUser(Wnd->spwndParent);
1568  else
1569  break;
1570 
1571  } while (Wnd != NULL);
1572  }
1574  {
1575  Ret = FALSE;
1576  }
1577  _SEH2_END;
1578  }
1579 
1580  return Ret;
1581 }
#define TRUE
Definition: types.h:120
HWND hWnd
Definition: settings.c:17
_SEH2_TRY
Definition: create.c:4250
static __inline PVOID DesktopPtrToUser(PVOID Ptr)
Definition: user_x.h:12
unsigned int BOOL
Definition: ntddk_ex.h:94
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
smooth NULL
Definition: ftsmooth.c:416
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
_SEH2_END
Definition: create.c:4424
struct _WND * spwndParent
Definition: ntuser.h:677
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
#define WS_VISIBLE
Definition: pedump.c:620
DWORD style
Definition: ntuser.h:670

Referenced by AnimateWindow(), AnyPopup(), and BaseControlWindowImpl_get_Visible().

◆ IsZoomed()

BOOL WINAPI IsZoomed ( HWND  hWnd)

Definition at line 1602 of file window.c.

1603 {
1604  return (GetWindowLongPtrW(hWnd, GWL_STYLE) & WS_MAXIMIZE) != 0;
1605 }
HWND hWnd
Definition: settings.c:17
#define GetWindowLongPtrW
Definition: winuser.h:4698
#define GWL_STYLE
Definition: winuser.h:846
#define WS_MAXIMIZE
Definition: pedump.c:623

Referenced by CreateWindowExA(), and CreateWindowExW().

◆ LockSetForegroundWindow()

BOOL WINAPI LockSetForegroundWindow ( UINT  uLockCode)

Definition at line 1612 of file window.c.

1613 {
1614  return NtUserxLockSetForegroundWindow(uLockCode);
1615 }
EXTINLINE BOOL NtUserxLockSetForegroundWindow(UINT uLockCode)
Definition: ntwrapper.h:841

Referenced by CredDialogProc().

◆ MDI_CalcDefaultChildPos()

void MDI_CalcDefaultChildPos ( HWND  hwndClient,
INT  total,
LPPOINT  lpPos,
INT  delta,
UINT id 
)

Definition at line 309 of file mdi.c.

310 {
311  INT nstagger;
312  RECT rect;
314 
315  if (total < 0) /* we are called from CreateWindow */
316  {
317  MDICLIENTINFO *ci = get_client_info(hwndClient);
318  total = ci ? ci->nTotalCreated : 0; // Do not portsync wine
319  *id = ci ? ci->idFirstChild + ci->nActiveChildren : 0; // Do not portsync wine
320  TRACE("MDI child id %04x\n", *id);
321  }
322 
323  GetClientRect( hwndClient, &rect );
324  if( rect.bottom - rect.top - delta >= spacing )
325  rect.bottom -= delta;
326 
327  nstagger = (rect.bottom - rect.top)/(3 * spacing);
328  lpPos[1].x = (rect.right - rect.left - nstagger * spacing);
329  lpPos[1].y = (rect.bottom - rect.top - nstagger * spacing);
330  lpPos[0].x = lpPos[0].y = spacing * (total%(nstagger+1));
331 }
static MDICLIENTINFO * get_client_info(HWND client)
Definition: mdi.c:225
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define SM_CYFRAME
Definition: winuser.h:986
int32_t INT
Definition: typedefs.h:56
& rect
Definition: startmenu.cpp:1413
#define TRACE(s)
Definition: solgame.cpp:4
#define SM_CYCAPTION
Definition: winuser.h:953
UINT nTotalCreated
Definition: mdi.c:123
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
UINT idFirstChild
Definition: mdi.c:121
UINT nActiveChildren
Definition: mdi.c:115

Referenced by CreateWindowExA(), CreateWindowExW(), and MDICascade().

◆ OpenIcon()

BOOL WINAPI OpenIcon ( HWND  hWnd)

Definition at line 1652 of file window.c.

1653 {
1655  return FALSE;
1656 
1658  return TRUE;
1659 }
#define TRUE
Definition: types.h:120
HWND hWnd
Definition: settings.c:17
#define GetWindowLongPtrW
Definition: winuser.h:4698
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_RESTORE
Definition: winuser.h:773
#define WS_MINIMIZE
Definition: pedump.c:622
#define GWL_STYLE
Definition: winuser.h:846

◆ RealChildWindowFromPoint()

HWND WINAPI RealChildWindowFromPoint ( HWND  hwndParent,
POINT  ptParentClientCoords 
)

Definition at line 1666 of file window.c.

1668 {
1669  return NtUserRealChildWindowFromPoint(hwndParent, ptParentClientCoords.x, ptParentClientCoords.y);
1670 }
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
static HWND hwndParent
Definition: cryptui.c:300
HWND NTAPI NtUserRealChildWindowFromPoint(HWND Parent, LONG x, LONG y)
Definition: winpos.c:3309

◆ RtlFreeLargeString()

VOID NTAPI RtlFreeLargeString ( IN PLARGE_STRING  LargeString)

Definition at line 141 of file window.c.

143 {
144  if (LargeString->Buffer)
145  {
146  RtlFreeHeap(GetProcessHeap(), 0, LargeString->Buffer);
147  RtlZeroMemory(LargeString, sizeof(LARGE_STRING));
148  }
149 }
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:603
#define GetProcessHeap()
Definition: compat.h:395
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261

Referenced by User32CreateWindowEx().

◆ RtlInitLargeString()

FORCEINLINE VOID RtlInitLargeString ( OUT PLARGE_STRING  plstr,
LPCVOID  psz,
BOOL  bUnicode 
)

Definition at line 124 of file window.c.

128 {
129  if(bUnicode)
130  {
132  }
133  else
134  {
136  }
137 }
VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING, IN PCWSTR, IN INT)
Definition: rtlstr.c:42
uint16_t * PWSTR
Definition: typedefs.h:54
VOID NTAPI RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING, IN PCSZ, IN INT)
Definition: rtlstr.c:17
signed char * PSTR
Definition: retypes.h:7

Referenced by User32CreateWindowEx().

◆ ScrollWindow()

BOOL WINAPI ScrollWindow ( HWND  hWnd,
int  dx,
int  dy,
CONST RECT lpRect,
CONST RECT prcClip 
)

Definition at line 1926 of file window.c.

1931 {
1932  return NtUserScrollWindowEx(hWnd,
1933  dx,
1934  dy,
1935  lpRect,
1936  prcClip,
1937  0,
1938  NULL,
1940 }
#define ERROR(name)
Definition: error_private.h:53
GLint dy
Definition: linetemp.h:97
HWND hWnd
Definition: settings.c:17
#define SW_ERASE
Definition: winuser.h:2534
smooth NULL
Definition: ftsmooth.c:416
DWORD NTAPI NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *rect, const RECT *clipRect, HRGN hrgnUpdate, LPRECT rcUpdate, UINT flags)
Definition: scrollex.c:567
#define SW_SCROLLWNDDCE
Definition: undocuser.h:90
#define SW_INVALIDATE
Definition: winuser.h:2533
#define SW_SCROLLCHILDREN
Definition: winuser.h:2532
GLint dx
Definition: linetemp.h:97

◆ ScrollWindowEx()

INT WINAPI ScrollWindowEx ( HWND  hWnd,
int  dx,
int  dy,
CONST RECT prcScroll,
CONST RECT prcClip,
HRGN  hrgnUpdate,
LPRECT  prcUpdate,
UINT  flags 
)

Definition at line 1948 of file window.c.

1956 {
1957  if (flags & SW_SMOOTHSCROLL)
1958  {
1959  FIXME("SW_SMOOTHSCROLL not supported.");
1960  // Fall through....
1961  }
1962  return NtUserScrollWindowEx(hWnd,
1963  dx,
1964  dy,
1965  prcScroll,
1966  prcClip,
1967  hrgnUpdate,
1968  prcUpdate,
1969  flags);
1970 }
GLint dy
Definition: linetemp.h:97
HWND hWnd
Definition: settings.c:17
#define FIXME(fmt,...)
Definition: debug.h:110
DWORD NTAPI NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *rect, const RECT *clipRect, HRGN hrgnUpdate, LPRECT rcUpdate, UINT flags)
Definition: scrollex.c:567
GLbitfield flags
Definition: glext.h:7161
GLint dx
Definition: linetemp.h:97

◆ SetForegroundWindow()

BOOL WINAPI SetForegroundWindow ( HWND  hWnd)

Definition at line 1676 of file window.c.

1677 {
1679 }
HWND hWnd
Definition: settings.c:17
EXTINLINE BOOL NtUserxSetForegroundWindow(HWND hWnd)
Definition: ntwrapper.h:788

Referenced by BaseControlWindowImpl_SetWindowForeground().

◆ SetLastErrorEx()

VOID WINAPI SetLastErrorEx ( DWORD  dwErrCode,
DWORD  dwType 
)

Definition at line 1866 of file window.c.

1867 {
1868  SetLastError(dwErrCode);
1869 }
#define SetLastError(x)
Definition: compat.h:409

◆ SetProcessDefaultLayout()

BOOL WINAPI SetProcessDefaultLayout ( DWORD  dwDefaultLayout)

Definition at line 1686 of file window.c.

1687 {
1689 }
DWORD_PTR NTAPI NtUserCallOneParam(DWORD_PTR Param, DWORD Routine)
Definition: simplecall.c:145
uint32_t DWORD_PTR
Definition: typedefs.h:63

Referenced by _tWinMain(), LPK_ApplyMirroring(), START_TEST(), WinMain(), and wWinMain().

◆ SetProgmanWindow()

HWND WINAPI SetProgmanWindow ( HWND  hWnd)

Definition at line 1899 of file window.c.

1900 {
1901  return NtUserxSetProgmanWindow(hWnd);
1902 }
HWND hWnd
Definition: settings.c:17
EXTINLINE HWND NtUserxSetProgmanWindow(HWND hWnd)
Definition: ntwrapper.h:763

◆ SetTaskmanWindow()

HWND WINAPI SetTaskmanWindow ( HWND  hWnd)

Definition at line 1890 of file window.c.

1891 {
1892  return NtUserxSetTaskmanWindow(hWnd);
1893 }
HWND hWnd
Definition: settings.c:17
EXTINLINE HWND NtUserxSetTaskmanWindow(HWND hWnd)
Definition: ntwrapper.h:758

Referenced by RegisterShellHook().

◆ SetWindowContextHelpId()

BOOL WINAPI SetWindowContextHelpId ( HWND  hwnd,
DWORD  dwContextHelpId 
)

Definition at line 1811 of file window.c.

1813 {
1814  return NtUserxSetWindowContextHelpId(hwnd, dwContextHelpId);
1815 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
EXTINLINE BOOL NtUserxSetWindowContextHelpId(HWND hWnd, DWORD_PTR dwContextHelpId)
Definition: ntwrapper.h:706

◆ SetWindowTextA()

BOOL WINAPI DECLSPEC_HOTPATCH SetWindowTextA ( HWND  hWnd,
LPCSTR  lpString 
)

Definition at line 1698 of file window.c.

1700 {
1701  PWND pwnd;
1702 
1703  pwnd = ValidateHwnd(hWnd);
1704  if (pwnd)
1705  {
1706  if (!TestWindowProcess(pwnd))
1707  {
1708  /* do not send WM_GETTEXT messages to other processes */
1709  return (DefWindowProcA(hWnd, WM_SETTEXT, 0, (LPARAM)lpString) >= 0);
1710  }
1711  return (SendMessageA(hWnd, WM_SETTEXT, 0, (LPARAM)lpString) >= 0);
1712  }
1713  return FALSE;
1714 }
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND hWnd
Definition: settings.c:17
BOOL FASTCALL TestWindowProcess(PWND)
Definition: misc.c:176
LONG_PTR LPARAM
Definition: windef.h:208
#define WM_SETTEXT
Definition: winuser.h:1599
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
Definition: ntuser.h:657

◆ SetWindowTextW()

BOOL WINAPI DECLSPEC_HOTPATCH SetWindowTextW ( HWND  hWnd,
LPCWSTR  lpString 
)

Definition at line 1723 of file window.c.

1725 {
1726  PWND pwnd;
1727 
1728  pwnd = ValidateHwnd(hWnd);
1729  if (pwnd)
1730  {
1731  if (!TestWindowProcess(pwnd))
1732  {
1733  /* do not send WM_GETTEXT messages to other processes */
1734  return (DefWindowProcW(hWnd, WM_SETTEXT, 0, (LPARAM)lpString) >= 0);
1735  }
1736  return (SendMessageW(hWnd, WM_SETTEXT, 0, (LPARAM)lpString) >= 0);
1737  }
1738  return FALSE;
1739 }
HWND hWnd
Definition: settings.c:17
BOOL FASTCALL TestWindowProcess(PWND)
Definition: misc.c:176
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LONG_PTR LPARAM
Definition: windef.h:208
#define WM_SETTEXT
Definition: winuser.h:1599
PWND FASTCALL ValidateHwnd(HWND hwnd)
Definition: misc.c:369
Definition: ntuser.h:657
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by BaseControlWindowImpl_put_Caption().

◆ ShowOwnedPopups()

BOOL WINAPI ShowOwnedPopups ( HWND  hWnd,
BOOL  fShow 
)

Definition at line 1746 of file window.c.

1747 {
1748  return NtUserxShowOwnedPopups(hWnd, fShow);
1749 }
HWND hWnd
Definition: settings.c:17
EXTINLINE BOOL NtUserxShowOwnedPopups(HWND hWnd, BOOL fShow)
Definition: ntwrapper.h:696

◆ SwitchToThisWindow()

VOID WINAPI SwitchToThisWindow ( HWND  hwnd,
BOOL  fAltTab 
)

Definition at line 82 of file window.c.

83 {
85 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
EXTINLINE VOID NtUserxSwitchToThisWindow(HWND hWnd, BOOL fAltTab)
Definition: ntwrapper.h:691

Referenced by ApplicationPage_OnSwitchTo(), CTaskSwitchWnd::HandleTaskItemClick(), and OnTimer().

◆ UpdateLayeredWindow()

BOOL WINAPI UpdateLayeredWindow ( HWND  hwnd,
HDC  hdcDst,
POINT pptDst,
SIZE psize,
HDC  hdcSrc,
POINT pptSrc,
COLORREF  crKey,
BLENDFUNCTION pbl,
DWORD  dwFlags 
)

Definition at line 1756 of file window.c.

1765 {
1766  if (dwFlags & ULW_EX_NORESIZE) /* only valid for UpdateLayeredWindowIndirect */
1767  {
1769  return FALSE;
1770  }
1772  hdcDst,
1773  pptDst,
1774  psize,
1775  hdcSrc,
1776  pptSrc,
1777  crKey,
1778  pbl,
1779  dwFlags,
1780  NULL);
1781 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
_Must_inspect_result_ _Out_ LPSIZE psize
Definition: ntgdi.h:1569
static HDC hdcSrc
Definition: xlate.c:32
#define ULW_EX_NORESIZE
Definition: winuser.h:2741
BOOL NTAPI NtUserUpdateLayeredWindow(HWND hwnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags, RECT *prcDirty)
Definition: layered.c:341
smooth NULL
Definition: ftsmooth.c:416
#define SetLastError(x)
Definition: compat.h:409
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
static HDC hdcDst
Definition: xlate.c:32

Referenced by init_procs().

◆ UpdateLayeredWindowIndirect()

BOOL WINAPI UpdateLayeredWindowIndirect ( HWND  hwnd,
const UPDATELAYEREDWINDOWINFO *  info 
)

Definition at line 1787 of file window.c.

1789 {
1790  if (info && info->cbSize == sizeof(*info))
1791  {
1793  info->hdcDst,
1794  (POINT *)info->pptDst,
1795  (SIZE *)info->psize,
1796  info->hdcSrc,
1797  (POINT *)info->pptSrc,
1798  info->crKey,
1799  (BLENDFUNCTION *)info->pblend,
1800  info->dwFlags,
1801  (RECT *)info->prcDirty);
1802  }
1804  return FALSE;
1805 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL NTAPI NtUserUpdateLayeredWindow(HWND hwnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags, RECT *prcDirty)
Definition: layered.c:341
#define SetLastError(x)
Definition: compat.h:409

◆ User32CallSendAsyncProcForKernel()

NTSTATUS WINAPI User32CallSendAsyncProcForKernel ( PVOID  Arguments,
ULONG  ArgumentLength 
)

Definition at line 24 of file window.c.

25 {
27 
28  TRACE("User32CallSendAsyncProcKernel()\n");
29 
30  CallbackArgs = (PSENDASYNCPROC_CALLBACK_ARGUMENTS)Arguments;
31 
32  if (ArgumentLength != sizeof(SENDASYNCPROC_CALLBACK_ARGUMENTS))
33  {
35  }
36 
37  CallbackArgs->Callback(CallbackArgs->Wnd,
38  CallbackArgs->Msg,
39  CallbackArgs->Context,
40  CallbackArgs->Result);
41  return(STATUS_SUCCESS);
42 }
#define STATUS_INFO_LENGTH_MISMATCH
Definition: udferr_usr.h:133
#define TRACE(s)
Definition: solgame.cpp:4
return STATUS_SUCCESS
Definition: btrfs.c:2725
struct _SENDASYNCPROC_CALLBACK_ARGUMENTS * PSENDASYNCPROC_CALLBACK_ARGUMENTS

◆ User32CreateWindowEx()

HWND WINAPI User32CreateWindowEx ( DWORD  dwExStyle,
LPCSTR  lpClassName,
LPCSTR  lpWindowName,
DWORD  dwStyle,
int  x,
int  y,
int  nWidth,
int  nHeight,
HWND  hWndParent,
HMENU  hMenu,
HINSTANCE  hInstance,
LPVOID  lpParam,
DWORD  dwFlags 
)

Definition at line 152 of file window.c.

165 {
166  LARGE_STRING WindowName;
167  LARGE_STRING lstrClassName, *plstrClassName;
168  LARGE_STRING lstrClassVersion, *plstrClassVersion;
169  UNICODE_STRING ClassName;
170  UNICODE_STRING ClassVersion;
171  WNDCLASSEXA wceA;
172  WNDCLASSEXW wceW;
174  DWORD dwLastError;
175  BOOL Unicode, ClassFound = FALSE;
176  HWND Handle = NULL;
177  LPCWSTR lpszClsVersion;
178  LPCWSTR lpLibFileName = NULL;
179  HANDLE pCtx = NULL;
180 
181 #if 0
182  DbgPrint("[window] User32CreateWindowEx style %d, exstyle %d, parent %d\n", dwStyle, dwExStyle, hWndParent);
183 #endif
184 
186  {
187  TRACE("RegisterSystemControls\n");
189  }
190 
191  Unicode = !(dwFlags & NUCWE_ANSI);
192 
193  if (IS_ATOM(lpClassName))
194  {
195  plstrClassName = (PVOID)lpClassName;
196  }
197  else
198  {
199  if (Unicode)
200  {
201  RtlInitUnicodeString(&ClassName, (PCWSTR)lpClassName);
202  }
203  else
204  {
205  if (!RtlCreateUnicodeStringFromAsciiz(&ClassName, (PCSZ)lpClassName))
206  {
208  return NULL;
209  }
210  }
211 
212  /* Copy it to a LARGE_STRING */
213  lstrClassName.Buffer = ClassName.Buffer;
214  lstrClassName.Length = ClassName.Length;
215  lstrClassName.MaximumLength = ClassName.MaximumLength;
216  plstrClassName = &lstrClassName;
217  }
218 
219  /* Initialize a LARGE_STRING */
220  RtlInitLargeString(&WindowName, lpWindowName, Unicode);
221 
222  // HACK: The current implementation expects the Window name to be UNICODE
223  if (!Unicode)
224  {
226  PSTR AnsiBuffer = WindowName.Buffer;
227  ULONG AnsiLength = WindowName.Length;
228 
229  WindowName.Length = 0;
230  WindowName.MaximumLength = AnsiLength * sizeof(WCHAR);
231  WindowName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(),
232  0,
233  WindowName.MaximumLength);
234  if (!WindowName.Buffer)
235  {
237  goto cleanup;
238  }
239 
240  Status = RtlMultiByteToUnicodeN(WindowName.Buffer,
241  WindowName.MaximumLength,
242  &WindowName.Length,
243  AnsiBuffer,
244  AnsiLength);
245  if (!NT_SUCCESS(Status))
246  {
247  goto cleanup;
248  }
249  }
250 
251  if (!hMenu && (dwStyle & (WS_OVERLAPPEDWINDOW | WS_POPUP)))
252  {
253  if (Unicode)
254  {
255  wceW.cbSize = sizeof(wceW);
256  if (GetClassInfoExW(hInstance, (LPCWSTR)lpClassName, &wceW) && wceW.lpszMenuName)
257  {
258  hMenu = LoadMenuW(hInstance, wceW.lpszMenuName);
259  }
260  }
261  else
262  {
263  wceA.cbSize = sizeof(wceA);
264  if (GetClassInfoExA(hInstance, lpClassName, &wceA) && wceA.lpszMenuName)
265  {
266  hMenu = LoadMenuA(hInstance, wceA.lpszMenuName);
267  }
268  }
269  }
270 
271  if (!Unicode) dwExStyle |= WS_EX_SETANSICREATOR;
272 
273  lpszClsVersion = ClassNameToVersion(lpClassName, NULL, &lpLibFileName, &pCtx, !Unicode);
274  if (!lpszClsVersion)
275  {
276  plstrClassVersion = plstrClassName;
277  }
278  else
279  {
280  RtlInitUnicodeString(&ClassVersion, lpszClsVersion);
281  lstrClassVersion.Buffer = ClassVersion.Buffer;
282  lstrClassVersion.Length = ClassVersion.Length;
283  lstrClassVersion.MaximumLength = ClassVersion.MaximumLength;
284  plstrClassVersion = &lstrClassVersion;
285  }
286 
287  for (;;)
288  {
289  Handle = NtUserCreateWindowEx(dwExStyle,
290  plstrClassName,
291  plstrClassVersion,
292  &WindowName,
293  dwStyle,
294  x,
295  y,
296  nWidth,
297  nHeight,
298  hWndParent,
299  hMenu,
300  hInstance,
301  lpParam,
302  dwFlags,
303  NULL);
304  if (Handle) break;
305  if (!lpLibFileName) break;
306  if (!ClassFound)
307  {
308  dwLastError = GetLastError();
309  if (dwLastError == ERROR_CANNOT_FIND_WND_CLASS)
310  {
311  ClassFound = VersionRegisterClass(ClassName.Buffer, lpLibFileName, pCtx, &hLibModule);
312  if (ClassFound) continue;
313  }
314  }
315  if (hLibModule)
316  {
317  dwLastError = GetLastError();
319  SetLastError(dwLastError);
320  hLibModule = NULL;
321  }
322  break;
323  }
324 
325 #if 0
326  DbgPrint("[window] NtUserCreateWindowEx() == %d\n", Handle);
327 #endif
328 
329 cleanup:
330  if (!Unicode)
331  {
332  if (!IS_ATOM(lpClassName))
333  RtlFreeUnicodeString(&ClassName);
334 
335  RtlFreeLargeString(&WindowName);
336  }
337 
338  return Handle;
339 }
HWND NTAPI NtUserCreateWindowEx(DWORD dwExStyle, PLARGE_STRING plstrClassName, PLARGE_STRING plstrClsVersion, PLARGE_STRING plstrWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam, DWORD dwFlags, PVOID acbiBuffer)
Definition: window.c:2476
CONST char * PCSZ
Definition: umtypes.h:125
const uint16_t * PCWSTR
Definition: typedefs.h:55
HINSTANCE hLibModule
Definition: sfc.c:23
VOID NTAPI RtlFreeLargeString(IN PLARGE_STRING LargeString)
Definition: window.c:141
LPCSTR lpszMenuName
Definition: winuser.h:3163
BOOL WINAPI GetClassInfoExW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSEXW)
LPCWSTR FASTCALL ClassNameToVersion(const void *lpszClass, LPCWSTR lpszMenuName, LPCWSTR *plpLibFileName, HANDLE *pContext, BOOL bAnsi)
Definition: class.c:85
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define DbgPrint
Definition: loader.c:25
USHORT MaximumLength
Definition: env_spec_w32.h:370
PVOID Buffer
Definition: ntuser.h:97
NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR, DWORD, LPDWORD, LPCSTR, DWORD)
HMENU WINAPI LoadMenuA(_In_opt_ HINSTANCE, _In_ LPCSTR)
LONG NTSTATUS
Definition: precomp.h:26
#define NUCWE_ANSI
Definition: undocuser.h:74
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
HINSTANCE hInstance
Definition: charmap.c:20
LPCWSTR lpszMenuName
Definition: winuser.h:3178
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
UINT cbSize
Definition: winuser.h:3154
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
void * PVOID
Definition: retypes.h:9
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:585
_In_ HANDLE Handle
Definition: extypes.h:390
#define TRACE(s)
Definition: solgame.cpp:4
#define FreeLibrary(x)
Definition: compat.h:405
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
UINT cbSize
Definition: winuser.h:3169
ULONG Length
Definition: ntuser.h:94
CHAR AnsiBuffer[1024]
Definition: debug.c:15
unsigned long DWORD
Definition: ntddk_ex.h:95
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define SetLastError(x)
Definition: compat.h:409
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
Status
Definition: gdiplustypes.h:24
#define WS_EX_SETANSICREATOR
Definition: undocuser.h:28
BOOL WINAPI GetClassInfoExA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSEXA)
signed char * PSTR
Definition: retypes.h:7
#define WS_POPUP
Definition: pedump.c:616
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
BOOL WINAPI RegisterSystemControls(VOID)
Definition: regcontrol.c:70
FORCEINLINE VOID RtlInitLargeString(OUT PLARGE_STRING plstr, LPCVOID psz, BOOL bUnicode)
Definition: window.c:124
unsigned int ULONG
Definition: retypes.h:1
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
char * cleanup(char *str)
Definition: wpickclick.c:99
#define IS_ATOM(x)
Definition: class.h:3
DWORD RegisterDefaultClasses
Definition: regcontrol.c:13
ULONG MaximumLength
Definition: ntuser.h:95
#define ERROR_OUTOFMEMORY
Definition: deptool.c:13
BOOL FASTCALL VersionRegisterClass(PCWSTR, LPCWSTR, HANDLE, HMODULE *)
Definition: class.c:195
#define ERROR_CANNOT_FIND_WND_CLASS
Definition: winerror.h:888

Referenced by CreateWindowExA(), and CreateWindowExW().

◆ User32EnumWindows()

static BOOL User32EnumWindows ( HDESK  hDesktop,
HWND  hWndparent,
WNDENUMPROC  lpfn,
LPARAM  lParam,
DWORD  dwThreadId,
BOOL  bChildren 
)
static

Definition at line 644 of file window.c.

650 {
651  DWORD i, dwCount = 0;
652  HWND* pHwnd = NULL;
653  HANDLE hHeap;
655 
656  if (!lpfn)
657  {
659  return FALSE;
660  }
661 
662  /* FIXME instead of always making two calls, should we use some
663  sort of persistent buffer and only grow it ( requiring a 2nd
664  call ) when the buffer wasn't already big enough? */
665  /* first get how many window entries there are */
666  Status = NtUserBuildHwndList(hDesktop,
667  hWndparent,
668  bChildren,
669  dwThreadId,
670  lParam,
671  NULL,
672  &dwCount);
673  if (!NT_SUCCESS(Status))
674  return FALSE;
675 
676  if (!dwCount)
677  {
678  if (!dwThreadId)
679  return FALSE;
680  else
681  return TRUE;
682  }
683 
684  /* allocate buffer to receive HWND handles */
685  hHeap = GetProcessHeap();
686  pHwnd = HeapAlloc(hHeap, 0, sizeof(HWND)*(dwCount+1));
687  if (!pHwnd)
688  {
690  return FALSE;
691  }
692 
693  /* now call kernel again to fill the buffer this time */
694  Status = NtUserBuildHwndList(hDesktop,
695  hWndparent,
696  bChildren,
697  dwThreadId,
698  lParam,
699  pHwnd,
700  &dwCount);
701  if (!NT_SUCCESS(Status))
702  {
703  if (pHwnd)
704  HeapFree(hHeap, 0, pHwnd);
705  return FALSE;
706  }
707 
708  /* call the user's callback function until we're done or
709  they tell us to quit */
710  for ( i = 0; i < dwCount; i++ )
711  {
712  /* FIXME I'm only getting NULLs from Thread Enumeration, and it's
713  * probably because I'm not doing it right in NtUserBuildHwndList.
714  * Once that's fixed, we shouldn't have to check for a NULL HWND
715  * here
716  * This is now fixed in revision 50205. (jt)
717  */
718  if (!pHwnd[i]) /* don't enumerate a NULL HWND */
719  continue;
720  if (!(*lpfn)(pHwnd[i], lParam))
721  {
722  HeapFree ( hHeap, 0, pHwnd );
723  return FALSE;
724  }
725  }
726  if (pHwnd)
727  HeapFree(hHeap, 0, pHwnd);
728  return TRUE;
729 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:91
#define TRUE
Definition: types.h:120
LONG NTSTATUS
Definition: precomp.h:26
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
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
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
NTSTATUS APIENTRY NtUserBuildHwndList(HDESK hDesktop, HWND hwndParent, BOOLEAN bChildren, ULONG dwThreadId, ULONG lParam, HWND *pWnd, ULONG *pBufSize)
Definition: window.c:1338
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
DWORD dwThreadId
Definition: fdebug.c:31
Status
Definition: gdiplustypes.h:24
LPARAM lParam
Definition: combotst.c:139
#define HeapFree(x, y, z)
Definition: compat.h:394

Referenced by EnumChildWindows(), EnumDesktopWindows(), EnumThreadWindows(), and EnumWindows().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( user32  )