2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2001-06-12 17:51:51 +00:00
|
|
|
|
2003-08-02 16:32:18 +00:00
|
|
|
struct _PROPERTY;
|
|
|
|
struct _WINDOW_OBJECT;
|
2003-10-22 13:34:25 +00:00
|
|
|
typedef struct _WINDOW_OBJECT *PWINDOW_OBJECT;
|
2003-08-02 16:32:18 +00:00
|
|
|
|
2004-02-24 01:30:58 +00:00
|
|
|
#include <include/object.h>
|
2001-06-12 17:51:51 +00:00
|
|
|
#include <include/class.h>
|
2002-07-04 19:56:38 +00:00
|
|
|
#include <include/msgqueue.h>
|
2002-07-17 21:04:57 +00:00
|
|
|
#include <include/winsta.h>
|
2002-08-24 11:09:17 +00:00
|
|
|
#include <include/dce.h>
|
2003-08-02 16:32:18 +00:00
|
|
|
#include <include/prop.h>
|
2004-04-17 11:00:14 +00:00
|
|
|
#include <include/scroll.h>
|
2002-07-04 19:56:38 +00:00
|
|
|
|
2009-07-01 17:19:16 +00:00
|
|
|
extern ATOM AtomMessage;
|
2010-01-12 05:25:22 +00:00
|
|
|
extern ATOM AtomWndObj; /* WNDOBJ list */
|
2009-07-01 17:19:16 +00:00
|
|
|
|
2009-07-22 05:23:08 +00:00
|
|
|
BOOL FASTCALL UserUpdateUiState(PWND Wnd, WPARAM wParam);
|
2007-11-21 08:32:45 +00:00
|
|
|
|
2001-06-12 17:51:51 +00:00
|
|
|
typedef struct _WINDOW_OBJECT
|
|
|
|
{
|
2010-01-15 13:47:25 +00:00
|
|
|
THRDESKHEAD head;
|
2009-07-22 05:23:08 +00:00
|
|
|
PWND Wnd;
|
2007-11-15 19:42:41 +00:00
|
|
|
|
2006-04-05 08:05:55 +00:00
|
|
|
/* Pointer to the thread information */
|
2009-12-14 05:02:56 +00:00
|
|
|
PTHREADINFO pti; // Use Wnd->head.pti
|
2003-08-21 15:26:19 +00:00
|
|
|
/* system menu handle. */
|
|
|
|
HMENU SystemMenu;
|
2002-05-06 22:20:32 +00:00
|
|
|
/* Handle for the window. */
|
2010-01-10 07:50:57 +00:00
|
|
|
HWND hSelf; // Use Wnd->head.h
|
2002-05-06 22:20:32 +00:00
|
|
|
/* Window flags. */
|
2009-12-14 06:48:40 +00:00
|
|
|
ULONG state;
|
2002-07-04 19:56:38 +00:00
|
|
|
/* Handle of region of the window to be updated. */
|
2010-01-10 07:50:57 +00:00
|
|
|
HANDLE hrgnUpdate;
|
2004-03-22 20:14:29 +00:00
|
|
|
/* Handle of the window region. */
|
2010-01-10 07:50:57 +00:00
|
|
|
HANDLE hrgnClip;
|
2009-12-14 05:02:56 +00:00
|
|
|
struct _WINDOW_OBJECT* spwndChild;
|
|
|
|
struct _WINDOW_OBJECT* spwndNext;
|
|
|
|
struct _WINDOW_OBJECT* spwndPrev;
|
2004-02-26 22:23:55 +00:00
|
|
|
/* Handle to the parent window. */
|
2009-12-14 05:02:56 +00:00
|
|
|
struct _WINDOW_OBJECT* spwndParent;
|
2004-02-26 22:23:55 +00:00
|
|
|
/* Handle to the owner window. */
|
2009-12-14 05:02:56 +00:00
|
|
|
HWND hOwner; // Use spwndOwner
|
2010-01-12 05:25:22 +00:00
|
|
|
|
|
|
|
|
2002-11-24 20:15:37 +00:00
|
|
|
/* Scrollbar info */
|
2010-01-10 07:50:57 +00:00
|
|
|
PSBINFOEX pSBInfo; // convert to PSBINFO
|
2010-01-12 05:25:22 +00:00
|
|
|
/* Entry in the list of thread windows. */
|
|
|
|
LIST_ENTRY ThreadListEntry;
|
2003-10-22 13:34:25 +00:00
|
|
|
} WINDOW_OBJECT; /* PWINDOW_OBJECT already declared at top of file */
|
2001-06-12 17:51:51 +00:00
|
|
|
|
2002-07-04 19:56:38 +00:00
|
|
|
/* Window flags. */
|
2009-12-14 06:48:40 +00:00
|
|
|
#define WINDOWOBJECT_NEED_SIZE WNDS_SENDSIZEMOVEMSGS
|
|
|
|
#define WINDOWOBJECT_NEED_ERASEBKGND WNDS_ERASEBACKGROUND
|
|
|
|
#define WINDOWOBJECT_NEED_NCPAINT WNDS_SENDNCPAINT
|
2009-12-14 05:02:56 +00:00
|
|
|
#define WINDOWOBJECT_RESTOREMAX (0x00000020) // Set/Clr WS_MAXIMIZE && Clr/Set WS_EX2_VERTICALLYMAXIMIZEDLEFT/RIGHT
|
2001-06-12 17:51:51 +00:00
|
|
|
|
2009-12-14 06:48:40 +00:00
|
|
|
#define WINDOWSTATUS_DESTROYING WNDS2_INDESTROY
|
|
|
|
#define WINDOWSTATUS_DESTROYED WNDS_DESTROYED
|
2004-02-26 22:23:55 +00:00
|
|
|
|
2004-04-02 20:51:08 +00:00
|
|
|
#define HAS_DLGFRAME(Style, ExStyle) \
|
|
|
|
(((ExStyle) & WS_EX_DLGMODALFRAME) || \
|
|
|
|
(((Style) & WS_DLGFRAME) && (!((Style) & WS_THICKFRAME))))
|
|
|
|
|
|
|
|
#define HAS_THICKFRAME(Style, ExStyle) \
|
|
|
|
(((Style) & WS_THICKFRAME) && \
|
|
|
|
(!(((Style) & (WS_DLGFRAME | WS_BORDER)) == WS_DLGFRAME)))
|
|
|
|
|
|
|
|
#define HAS_THINFRAME(Style, ExStyle) \
|
|
|
|
(((Style) & WS_BORDER) || (!((Style) & (WS_CHILD | WS_POPUP))))
|
|
|
|
|
2004-02-24 01:30:58 +00:00
|
|
|
#define IntIsDesktopWindow(WndObj) \
|
2009-12-14 05:02:56 +00:00
|
|
|
(WndObj->spwndParent == NULL)
|
2004-02-24 01:30:58 +00:00
|
|
|
|
|
|
|
#define IntIsBroadcastHwnd(hWnd) \
|
|
|
|
(hWnd == HWND_BROADCAST || hWnd == HWND_TOPMOST)
|
|
|
|
|
|
|
|
|
|
|
|
#define IntWndBelongsToThread(WndObj, W32Thread) \
|
2010-01-12 05:25:22 +00:00
|
|
|
(((WndObj->pti->pEThread && WndObj->pti->pEThread->Tcb.Win32Thread)) && \
|
|
|
|
(WndObj->pti->pEThread->Tcb.Win32Thread == W32Thread))
|
2010-01-10 07:50:57 +00:00
|
|
|
// ((WndObj->head.pti) && (WndObj->head.pti == W32Thread))
|
2004-02-24 01:30:58 +00:00
|
|
|
|
|
|
|
#define IntGetWndThreadId(WndObj) \
|
2010-01-12 05:25:22 +00:00
|
|
|
WndObj->pti->pEThread->Cid.UniqueThread
|
2010-01-10 07:50:57 +00:00
|
|
|
// WndObj->head.pti->pEThread->Cid.UniqueThread
|
2004-02-24 01:30:58 +00:00
|
|
|
|
|
|
|
#define IntGetWndProcessId(WndObj) \
|
2010-01-12 05:25:22 +00:00
|
|
|
WndObj->pti->pEThread->ThreadsProcess->UniqueProcessId
|
2010-01-10 07:50:57 +00:00
|
|
|
// WndObj->head.pti->pEThread->ThreadsProcess->UniqueProcessId
|
2004-02-24 01:30:58 +00:00
|
|
|
|
2003-11-18 20:49:39 +00:00
|
|
|
BOOL FASTCALL
|
|
|
|
IntIsWindow(HWND hWnd);
|
|
|
|
|
|
|
|
HWND* FASTCALL
|
|
|
|
IntWinListChildren(PWINDOW_OBJECT Window);
|
2003-08-11 19:14:16 +00:00
|
|
|
|
2003-08-03 15:08:14 +00:00
|
|
|
NTSTATUS FASTCALL
|
|
|
|
InitWindowImpl (VOID);
|
|
|
|
|
|
|
|
NTSTATUS FASTCALL
|
|
|
|
CleanupWindowImpl (VOID);
|
|
|
|
|
|
|
|
VOID FASTCALL
|
2009-03-19 01:42:34 +00:00
|
|
|
IntGetClientRect (PWINDOW_OBJECT WindowObject, RECTL *Rect);
|
2003-08-03 15:08:14 +00:00
|
|
|
|
|
|
|
HWND FASTCALL
|
2003-08-19 11:48:50 +00:00
|
|
|
IntGetActiveWindow (VOID);
|
2003-08-03 15:08:14 +00:00
|
|
|
|
|
|
|
BOOL FASTCALL
|
2005-09-08 16:18:51 +00:00
|
|
|
IntIsWindowVisible (PWINDOW_OBJECT Window);
|
2003-08-03 15:08:14 +00:00
|
|
|
|
|
|
|
BOOL FASTCALL
|
2005-09-11 14:48:32 +00:00
|
|
|
IntIsChildWindow (PWINDOW_OBJECT Parent, PWINDOW_OBJECT Child);
|
2003-08-03 15:08:14 +00:00
|
|
|
|
2003-08-21 23:07:40 +00:00
|
|
|
VOID FASTCALL
|
|
|
|
IntUnlinkWindow(PWINDOW_OBJECT Wnd);
|
2003-07-25 19:36:26 +00:00
|
|
|
|
2003-10-18 17:35:44 +00:00
|
|
|
VOID FASTCALL
|
|
|
|
IntLinkWindow(PWINDOW_OBJECT Wnd, PWINDOW_OBJECT WndParent, PWINDOW_OBJECT WndPrevSibling);
|
|
|
|
|
2003-08-04 16:55:36 +00:00
|
|
|
PWINDOW_OBJECT FASTCALL
|
2003-08-19 11:48:50 +00:00
|
|
|
IntGetAncestor(PWINDOW_OBJECT Wnd, UINT Type);
|
2003-08-04 16:55:36 +00:00
|
|
|
|
|
|
|
PWINDOW_OBJECT FASTCALL
|
2003-08-19 11:48:50 +00:00
|
|
|
IntGetParent(PWINDOW_OBJECT Wnd);
|
2003-08-04 16:55:36 +00:00
|
|
|
|
2005-03-13 23:08:51 +00:00
|
|
|
PWINDOW_OBJECT FASTCALL
|
|
|
|
IntGetOwner(PWINDOW_OBJECT Wnd);
|
|
|
|
|
2004-02-24 01:30:58 +00:00
|
|
|
|
2004-03-23 21:47:37 +00:00
|
|
|
INT FASTCALL
|
2005-09-08 16:18:51 +00:00
|
|
|
IntGetWindowRgn(PWINDOW_OBJECT Window, HRGN hRgn);
|
2004-03-23 21:47:37 +00:00
|
|
|
|
|
|
|
INT FASTCALL
|
2009-03-19 01:42:34 +00:00
|
|
|
IntGetWindowRgnBox(PWINDOW_OBJECT Window, RECTL *Rect);
|
2004-03-23 21:47:37 +00:00
|
|
|
|
2004-04-02 20:51:08 +00:00
|
|
|
BOOL FASTCALL
|
|
|
|
IntGetWindowInfo(PWINDOW_OBJECT WindowObject, PWINDOWINFO pwi);
|
|
|
|
|
|
|
|
VOID FASTCALL
|
2004-12-12 23:08:13 +00:00
|
|
|
IntGetWindowBorderMeasures(PWINDOW_OBJECT WindowObject, UINT *cx, UINT *cy);
|
2004-04-02 20:51:08 +00:00
|
|
|
|
2004-05-01 18:06:59 +00:00
|
|
|
BOOL FASTCALL
|
|
|
|
IntAnyPopup(VOID);
|
|
|
|
|
2004-05-02 17:25:21 +00:00
|
|
|
BOOL FASTCALL
|
|
|
|
IntIsWindowInDestroy(PWINDOW_OBJECT Window);
|
|
|
|
|
2005-07-18 03:12:01 +00:00
|
|
|
BOOL FASTCALL
|
2005-09-08 16:18:51 +00:00
|
|
|
IntShowOwnedPopups( PWINDOW_OBJECT owner, BOOL fShow );
|
2005-07-18 03:12:01 +00:00
|
|
|
|
2008-07-13 23:31:00 +00:00
|
|
|
LRESULT FASTCALL
|
2008-07-22 04:54:53 +00:00
|
|
|
IntDefWindowProc( PWINDOW_OBJECT Window, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL Ansi);
|
2008-07-13 23:31:00 +00:00
|
|
|
|
2009-07-26 01:59:08 +00:00
|
|
|
VOID FASTCALL IntNotifyWinEvent(DWORD, PWND, LONG, LONG);
|
2008-08-02 00:38:01 +00:00
|
|
|
|
2009-07-22 05:23:08 +00:00
|
|
|
PWND APIENTRY co_IntCreateWindowEx(DWORD,PUNICODE_STRING,PUNICODE_STRING,DWORD,LONG,LONG,LONG,LONG,HWND,HMENU,HINSTANCE,LPVOID,DWORD,BOOL);
|
2009-09-07 04:55:00 +00:00
|
|
|
WNDPROC FASTCALL IntGetWindowProc(PWND,BOOL);
|
|
|
|
|
2001-06-12 17:51:51 +00:00
|
|
|
/* EOF */
|