struct _DESKTOP;
struct _WND;
+typedef enum _USERTHREADINFOCLASS
+{
+ UserThreadShutdownInformation,
+ UserThreadFlags,
+ UserThreadTaskName,
+ UserThreadWOWInformation,
+ UserThreadHungStatus,
+ UserThreadInitiateShutdown,
+ UserThreadEndShutdown,
+ UserThreadUseActiveDesktop,
+ UserThreadUseDesktop,
+ UserThreadRestoreDesktop,
+ UserThreadCsrApiPort,
+} USERTHREADINFOCLASS;
+
typedef struct _LARGE_UNICODE_STRING
{
ULONG Length;
VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING,IN PCWSTR,IN INT);
BOOL NTAPI RtlLargeStringToUnicodeString( PUNICODE_STRING, PLARGE_STRING);
+#define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
+
typedef struct _DESKTOPINFO
{
PVOID pvDesktopBase;
PVOID pvDesktopLimit;
struct _WND *spwnd;
DWORD fsHooks;
- struct tagHOOK * aphkStart[16];
+ LIST_ENTRY aphkStart[NB_HOOKS];
HWND hTaskManWindow;
HWND hProgmanWindow;
typedef struct _PROCDESKHEAD
{
- HANDLE h;
- DWORD cLockObj;
+ HEAD;
DWORD hTaskWow;
struct _DESKTOP *rpdesk;
PVOID pSelf;
} PROCDESKHEAD, *PPROCDESKHEAD;
+typedef struct _PROCMARKHEAD
+{
+ HEAD;
+ ULONG hTaskWow;
+ PPROCESSINFO ppi;
+} PROCMARKHEAD, *PPROCMARKHEAD;
+
#define UserHMGetHandle(obj) ((obj)->head.h)
/* Window Client Information structure */
struct _ETHREAD;
+#define WEF_SETBYWNDPTI 0x0001
+
typedef struct tagHOOK
{
THRDESKHEAD head;
+ struct tagHOOK *phkNext; /* This is for user space. */
+ int HookId; /* Hook table index */
+ ULONG_PTR offPfn;
+ ULONG flags; /* Some internal flags */
+ INT ihmod;
+ PTHREADINFO ptiHooked;
+ struct _DESKTOP *rpdesk;
+ /* ReactOS */
LIST_ENTRY Chain; /* Hook chain entry */
struct _ETHREAD* Thread; /* Thread owning the hook */
- int HookId; /* Hook table index */
HOOKPROC Proc; /* Hook function */
BOOLEAN Ansi; /* Is it an Ansi hook? */
- ULONG Flags; /* Some internal flags */
UNICODE_STRING ModuleName; /* Module name for global hooks */
} HOOK, *PHOOK;
typedef struct _CALLBACKWND
{
HWND hWnd;
- PVOID pvWnd;
+ struct _WND *pWnd;
} CALLBACKWND, *PCALLBACKWND;
#define CI_TRANSACTION 0x00000001
#define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
+#define HRGN_NULL ( (HRGN) 0) // NULL empty region
+#define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
+#define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
+
+/* Menu Item fType. */
+#define MFT_RTOL 0x6000
+
+typedef struct tagITEM
+{
+ UINT fType;
+ UINT fState;
+ UINT wID;
+ struct tagMENU* spSubMenu; /* Pop-up menu. */
+ HANDLE hbmpChecked;
+ HANDLE hbmpUnchecked;
+ USHORT* lpstr; /* Item text pointer. */
+ ULONG cch;
+ DWORD_PTR dwItemData;
+ ULONG xItem; /* Item position. left */
+ ULONG yItem; /* " top */
+ ULONG cxItem; /* Item Size Width */
+ ULONG cyItem; /* " Height */
+ ULONG dxTab; /* X position of text after Tab */
+ ULONG ulX; /* underline.. start position */
+ ULONG ulWidth; /* underline.. width */
+ HBITMAP hbmp; /* bitmap */
+ INT cxBmp; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
+ INT cyBmp; /* Height " */
+} ITEM, *PITEM;
+
+typedef struct tagMENULIST
+{
+ struct tagMENULIST* pNext;
+ struct tagMENU* pMenu;
+} MENULIST, *PMENULIST;
+
+/* Menu fFlags, upper byte is MNS_X style flags. */
+#define MNF_POPUP 0x0001
+#define MNF_UNDERLINE 0x0004
+#define MNF_INACTIVE 0x0010
+#define MNF_RTOL 0x0020
+#define MNF_DESKTOPMN 0x0040
+#define MNF_SYSDESKMN 0x0080
+#define MNF_SYSSUBMENU 0x0100
+
+typedef struct tagMENU
+{
+ PROCDESKHEAD head;
+ ULONG fFlags; /* [Style flags | Menu flags] */
+ INT iItem; /* nPos of selected item, if -1 not selected. */
+ UINT cAlloced; /* Number of allocated items. Inc's of 8 */
+ UINT cItems; /* Number of items in the menu */
+ ULONG cxMenu; /* Width of the whole menu */
+ ULONG cyMenu; /* Height of the whole menu */
+ ULONG cxTextAlign; /* Offset of text when items have both bitmaps and text */
+ struct _WND *spwndNotify; /* window receiving the messages for ownerdraw */
+ PITEM rgItems; /* Array of menu items */
+ struct tagMENULIST* pParentMenus; /* If this is SubMenu, list of parents. */
+ DWORD dwContextHelpId;
+ ULONG cyMax; /* max height of the whole menu, 0 is screen height */
+ DWORD_PTR dwMenuData; /* application defined value */
+ HBRUSH hbrBack; /* brush for menu background */
+ INT iTop; /* Current scroll position Top */
+ INT iMaxTop; /* Current scroll position Max Top */
+ DWORD dwArrowsOn:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
+} MENU, *PMENU;
+
typedef struct _REGISTER_SYSCLASS
{
/* This is a reactos specific class used to initialize the
} CLS, *PCLS;
+typedef struct _SBINFOEX
+{
+ SCROLLBARINFO ScrollBarInfo;
+ SCROLLINFO ScrollInfo;
+} SBINFOEX, *PSBINFOEX;
+
// State Flags !Not Implemented!
#define WNDS_HASMENU 0X00000001
#define WNDS_HASVERTICALSCROOLLBAR 0X00000002
#define WNDS2_SHELLHOOKREGISTERED 0X40000000
#define WNDS2_WMCREATEMSGPROCESSED 0X80000000
-/* Non SDK ExStyles */
-#define WS_EX_MAKEVISIBLEWHENUNGHOSTED 0x00000800
-#define WS_EX_FORCELEGACYRESIZENCMETR 0x00800000
-#define WS_EX_UISTATEACTIVE 0x04000000
-#define WS_EX_REDIRECTED 0X20000000
-#define WS_EX_UISTATEKBACCELHIDDEN 0X40000000
-#define WS_EX_UISTATEFOCUSRECTHIDDEN 0X80000000
-#define WS_EX_SETANSICREATOR 0x80000000 // For WNDS_ANSICREATOR
-
-/* Non SDK Styles */
-#define WS_MAXIMIZED WS_MAXIMIZE
-#define WS_MINIMIZED WS_MINIMIZE
-
/* ExStyles2 */
#define WS_EX2_CLIPBOARDLISTENER 0X00000001
#define WS_EX2_LAYEREDINVALIDATE 0X00000002
HRGN hrgnClip;
HRGN hrgnNewFrame;
/* Window name. */
- UNICODE_STRING strName;
+ LARGE_UNICODE_STRING strName;
/* Size of the extra data associated with the window. */
ULONG cbwndExtra;
HWND hWndLastActive;
struct _WND *spwndClipboardListener;
DWORD ExStyle2;
+ /* ReactOS */
struct
{
RECT NormalRect;
UINT InternalPosInitialized : 1;
UINT HideFocus : 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
UINT HideAccel : 1; // WS_EX_UISTATEKBACCELHIDDEN ?
+
+ /* Scrollbar info */
+ PSBINFOEX pSBInfoex; // convert to PSBINFO
+ /* Entry in the list of thread windows. */
+ LIST_ENTRY ThreadListEntry;
} WND, *PWND;
typedef struct _PFNCLIENT
SHAREDINFO siClient;
} USERCONNECT, *PUSERCONNECT;
-//
-// Non SDK Window Message types.
-//
-#define WM_CLIENTSHUTDOWN 59
-#define WM_COPYGLOBALDATA 73
-#define WM_SYSTIMER 280
-#define WM_POPUPSYSTEMMENU 787
-#define WM_CBT 1023 // ReactOS only.
-#define WM_MAXIMUM 0x0001FFFF
-
-//
-// Non SDK DCE types.
-//
-#define DCX_USESTYLE 0x00010000
-#define DCX_KEEPCLIPRGN 0x00040000
-
-//
-// Non SDK Queue message types.
-//
-#define QS_SMRESULT 0x8000
-
DWORD
NTAPI
NtUserAssociateInputContext(
NTAPI
NtUserGetMenuIndex(
HMENU hMenu,
- UINT wID);
+ HMENU hSubMenu);
BOOL
NTAPI
HWND hWnd,
HMENU hMenu);
-DWORD
+BOOL
NTAPI
NtUserThunkedMenuInfo(
HMENU hMenu,
LPCMENUINFO lpcmi);
-DWORD
+BOOL
NTAPI
NtUserThunkedMenuItemInfo(
HMENU hMenu,
NTAPI
NtUserCreateWindowEx(
DWORD dwExStyle,
- PUNICODE_STRING lpClassName,
- PUNICODE_STRING lpWindowName,
- DWORD dwStyle,
- LONG x,
- LONG y,
- LONG nWidth,
- LONG nHeight,
- HWND hWndParent,
- HMENU hMenu,
- HINSTANCE hInstance,
- LPVOID lpParam,
- DWORD dwShowMode,
- BOOL bUnicodeWindow,
- DWORD dwUnknown);
-#if 0
-HWND
-NTAPI
-NtUserCreateWindowEx(
- DWORD dwExStyle, // |= 0x80000000 == Ansi used to set WNDS_ANSICREATOR
PLARGE_STRING plstrClassName,
- PLARGE_STRING plstrClsVesrion,
+ PLARGE_STRING plstrClsVersion,
PLARGE_STRING plstrWindowName,
DWORD dwStyle,
int x,
LPVOID lpParam,
DWORD dwFlags,
PVOID acbiBuffer);
-#endif
HWINSTA
NTAPI
NtUserCreateWindowStation(
- PUNICODE_STRING lpszWindowStationName,
+ POBJECT_ATTRIBUTES ObjectAttributes,
ACCESS_MASK dwDesiredAccess,
- LPSECURITY_ATTRIBUTES lpSecurity,
+ DWORD Unknown2,
DWORD Unknown3,
DWORD Unknown4,
DWORD Unknown5,
const PUNICODE_STRING str,
UINT uFlags);
+// Used with NtUserDrawIconEx, last parameter.
+typedef struct _DRAWICONEXDATA
+{
+ HBITMAP hbmMask;
+ HBITMAP hbmColor;
+ int cx;
+ int cy;
+} DRAWICONEXDATA, *PDRAWICONEXDATA;
+
BOOL
NTAPI
NtUserDrawIconEx(
UINT istepIfAniCur,
HBRUSH hbrFlickerFreeDraw,
UINT diFlags,
- DWORD Unknown0,
- DWORD Unknown1);
+ BOOL bMetaHDC,
+ PVOID pDIXData);
DWORD
NTAPI
UINT wSBflags,
UINT wArrows);
-DWORD
+BOOL
NTAPI
NtUserEndDeferWindowPosEx(
- DWORD Unknown0,
+ HDWP WinPosInfo,
DWORD Unknown1);
BOOL NTAPI
NtUserGetListBoxInfo(
HWND hWnd);
-typedef struct tagNTUSERGETMESSAGEINFO
-{
- MSG Msg;
- ULONG LParamSize;
-} NTUSERGETMESSAGEINFO, *PNTUSERGETMESSAGEINFO;
-
-BOOL
-NTAPI
-NtUserGetMessage(
- PNTUSERGETMESSAGEINFO MsgInfo,
- HWND hWnd,
- UINT wMsgFilterMin,
- UINT wMsgFilterMax);
+BOOL APIENTRY
+NtUserGetMessage(PMSG pMsg,
+ HWND hWnd,
+ UINT MsgFilterMin,
+ UINT MsgFilterMax);
DWORD
NTAPI
THREADSTATE_PROGMANWINDOW,
THREADSTATE_TASKMANWINDOW,
THREADSTATE_GETMESSAGETIME,
- THREADSTATE_GETINPUTSTATE
+ THREADSTATE_GETINPUTSTATE,
+ THREADSTATE_UPTIMELASTREAD
};
DWORD_PTR
UINT transType,
DWORD keyboardId,
HKL dwhkl );
+
+typedef struct tagDOSENDMESSAGE
+{
+ UINT uFlags;
+ UINT uTimeout;
+ ULONG_PTR Result;
+}
+DOSENDMESSAGE, *PDOSENDMESSAGE;
+
BOOL
NTAPI
NtUserMessageCall(
HDESK
NTAPI
NtUserOpenDesktop(
- PUNICODE_STRING lpszDesktopName,
- DWORD dwFlags,
- ACCESS_MASK dwDesiredAccess);
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ DWORD dwFlags,
+ ACCESS_MASK dwDesiredAccess);
HDESK
NTAPI
HWINSTA
NTAPI
NtUserOpenWindowStation(
- PUNICODE_STRING lpszWindowStationName,
+ POBJECT_ATTRIBUTES ObjectAttributes,
ACCESS_MASK dwDesiredAccess);
BOOL
DWORD dwUnknown5,
DWORD dwUnknown6);
-BOOL
-NTAPI
-NtUserPeekMessage(
- PNTUSERGETMESSAGEINFO MsgInfo,
- HWND hWnd,
- UINT wMsgFilterMin,
- UINT wMsgFilterMax,
- UINT wRemoveMsg);
+BOOL APIENTRY
+NtUserPeekMessage( PMSG pMsg,
+ HWND hWnd,
+ UINT MsgFilterMin,
+ UINT MsgFilterMax,
+ UINT RemoveMsg);
BOOL
NTAPI
DWORD dwUnknown3,
DWORD dwUnknown4);
-DWORD
+NTSTATUS
NTAPI
NtUserSetInformationThread(
- DWORD dwUnknown1,
- DWORD dwUnknown2,
- DWORD dwUnknown3,
- DWORD dwUnknown4);
+ IN HANDLE ThreadHandle,
+ IN USERTHREADINFOCLASS ThreadInformationClass,
+ IN PVOID ThreadInformation,
+ IN ULONG ThreadInformationLength
+);
DWORD
NTAPI
{
struct
{
- UINT uiLo;
- UINT uiHi;
+ UINT_PTR uiLo;
+ UINT_PTR uiHi;
} Packed;
LPARAM Unpacked;
} Value;
#define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
#define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
-#define NOPARAM_ROUTINE_CSRSS_INITIALIZED 0xffff0007
#define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
#define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
-#define ONEPARAM_ROUTINE_ISWINDOWINDESTROY 0xfffe000c
#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
-#define ONEPARAM_ROUTINE_CREATECURICONHANDLE 0xfffe0025 // CREATE_EMPTY_CURSOR_OBJECT ?
-#define ONEPARAM_ROUTINE_MSQSETWAKEMASK 0xfffe0027
#define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
-#define TWOPARAM_ROUTINE_GETWINDOWRGNBOX 0xfffd0048 // user mode
-#define TWOPARAM_ROUTINE_GETWINDOWRGN 0xfffd0049 // user mode
#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
#define MSQ_STATE_CAPTURE 0x1
#define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
#define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
+#define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
DWORD
NTAPI
ULONG nBufSize,
DWORD Reserved);
-/* Use ONEPARAM_ROUTINE_CREATEEMPTYCURSOROBJECT (0x21) ? */
-HANDLE
-NTAPI
-NtUserCreateCursorIconHandle(
- PICONINFO IconInfo,
- BOOL Indirect);
-
/* Should be done in usermode and use NtUserGetCPD. */
ULONG_PTR
BOOL fsog
);
-
-
typedef struct tagROSMENUITEMINFO
{
/* ----------- MENUITEMINFOW ----------- */
HBITMAP hbmpItem;
/* ----------- Extra ----------- */
RECT Rect; /* Item area (relative to menu window) */
- UINT XTab; /* X position of text after Tab */
- LPWSTR Text; /* Copy of the text pointer in MenuItem->Text */
+ UINT dxTab; /* X position of text after Tab */
+ LPWSTR lpstr; /* Copy of the text pointer in MenuItem->Text */
} ROSMENUITEMINFO, *PROSMENUITEMINFO;
BOOL
IN HWND hWnd,
IN DWORD dwFlags);
-
-typedef struct tagNTUSERSENDMESSAGEINFO
-{
- BOOL HandledByKernel;
- BOOL Ansi;
- WNDPROC Proc;
-} NTUSERSENDMESSAGEINFO, *PNTUSERSENDMESSAGEINFO;
-
-/* use NtUserMessageCall */
-LRESULT NTAPI
-NtUserSendMessage(HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam,
- PNTUSERSENDMESSAGEINFO Info);
-
-/* use NtUserMessageCall */
-LRESULT NTAPI
-NtUserSendMessageTimeout(HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam,
- UINT uFlags,
- UINT uTimeout,
- ULONG_PTR *uResult,
- PNTUSERSENDMESSAGEINFO Info);
-
typedef struct _SETSCROLLBARINFO
{
int nTrackPos;