[SDK] -Add the prototype of PaintMenuBar and update the prototype of NtUserPaintMenuBar.
[reactos.git] / reactos / win32ss / include / ntuser.h
index 7794ac0..0bfbc0a 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __WIN32K_NTUSER_H
 #define __WIN32K_NTUSER_H
 
-typedef struct _PROCESSINFO *PPROCESSINFO;
-typedef struct _THREADINFO *PTHREADINFO;
+struct _PROCESSINFO;
+struct _THREADINFO;
 struct _DESKTOP;
 struct _WND;
 struct tagPOPUPMENU;
@@ -13,7 +13,8 @@ typedef HANDLE HIMC;
 #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
 #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
 
-#define HANDLEENTRY_INDESTROY 1
+#define HANDLEENTRY_DESTROY 1
+#define HANDLEENTRY_INDESTROY 2
 
 typedef struct _USER_HANDLE_ENTRY
 {
@@ -21,8 +22,8 @@ typedef struct _USER_HANDLE_ENTRY
     union
     {
         PVOID pi;
-        PTHREADINFO pti; /* pointer to Win32ThreadInfo */
-        PPROCESSINFO ppi; /* pointer to W32ProcessInfo */
+        struct _THREADINFO *pti; /* pointer to Win32ThreadInfo */
+        struct _PROCESSINFO *ppi; /* pointer to W32ProcessInfo */
     };
     unsigned char type; /* object type (0 if free) */
     unsigned char flags;
@@ -140,8 +141,9 @@ typedef struct _DESKTOPINFO
     HWND hProgmanWindow;
     HWND hShellWindow;
     struct _WND *spwndShell;
+    struct _WND *spwndBkGnd;
 
-    PPROCESSINFO ppiShellProcess;
+    struct _PROCESSINFO *ppiShellProcess;
 
     union
     {
@@ -178,7 +180,7 @@ typedef struct _HEAD
 typedef struct _THROBJHEAD
 {
     HEAD;
-    PTHREADINFO pti;
+    struct _THREADINFO *pti;
 } THROBJHEAD, *PTHROBJHEAD;
 
 typedef struct _THRDESKHEAD
@@ -200,7 +202,7 @@ typedef struct _PROCMARKHEAD
 {
     HEAD;
     ULONG hTaskWow;
-    PPROCESSINFO ppi;
+    struct _PROCESSINFO *ppi;
 } PROCMARKHEAD, *PPROCMARKHEAD;
 
 #define UserHMGetHandle(obj) ((obj)->head.h)
@@ -218,7 +220,7 @@ typedef struct tagHOOK
     ULONG_PTR offPfn;
     ULONG flags; /* Some internal flags */
     INT ihmod;
-    PTHREADINFO ptiHooked;
+    struct _THREADINFO *ptiHooked;
     struct _DESKTOP *rpdesk;
     /* ReactOS */
     LIST_ENTRY Chain; /* Hook chain entry */
@@ -309,7 +311,7 @@ typedef struct _CLIENTINFO
     LPDWORD lpdwRegisteredClasses;
     ULONG Win32ClientInfo3[26];
 /* It's just a pointer reference not to be used w the structure in user space. */
-    PPROCESSINFO ppi;
+    struct _PROCESSINFO *ppi;
 } CLIENTINFO, *PCLIENTINFO;
 
 /* Make sure it fits into the TEB */
@@ -375,6 +377,9 @@ typedef struct tagMENULIST
 /* Hack */
 #define MNF_SYSMENU    0x0200
 
+/* (other FocusedItem values give the position of the focused item) */
+#define NO_SELECTED_ITEM 0xffff
+
 typedef struct tagMENU
 {
     PROCDESKHEAD head;
@@ -435,7 +440,7 @@ typedef struct tagPOPUPMENU
     struct _WND *spwndPrevPopup;
     PMENU spmenu;
     PMENU spmenuAlternate;
-    struct _WND *spwndActivePopup; 
+    struct _WND *spwndActivePopup;
     struct tagPOPUPMENU *ppopupmenuRoot;
     struct tagPOPUPMENU *ppmDelayedFree;
     UINT posSelectedItem;
@@ -545,24 +550,12 @@ typedef struct _CLS
     INT cbclsExtra;
     INT cbwndExtra;
     HINSTANCE hModule;
-#ifdef NEW_CURSORICON
     struct _CURICON_OBJECT *spicn;
     struct _CURICON_OBJECT *spcur;
-#else
-    HANDLE hIcon; /* FIXME - Use pointer! */
-    HANDLE hCursor; /* FIXME - Use pointer! */
-#endif
     HBRUSH hbrBackground;
     PWSTR lpszMenuName; /* kernel use */
     PSTR lpszAnsiClassName; /* " */
-#ifdef NEW_CURSORICON
     struct _CURICON_OBJECT *spicnSm;
-#else
-    HANDLE hIconSm; /* FIXME - Use pointer! */
-
-    //// ReactOS doesn't support cache icons. */
-    HICON hIconSmIntern; /* Internal small icon, derived from hIcon */
-#endif
     ////
     UINT Unicode:1; // !CSF_ANSIPROC
     UINT Global:1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
@@ -739,6 +732,15 @@ typedef struct _SBWND
     SBCALC SBCalc;
 } SBWND, *PSBWND;
 
+typedef struct _MDIWND
+{
+  WND wnd;
+  DWORD dwReserved;
+  PVOID pmdi;
+} MDIWND, *PMDIWND;
+
+#define GWLP_MDIWND 4
+
 typedef struct _MENUWND
 {
     WND wnd;
@@ -914,6 +916,17 @@ typedef struct tagOEMBITMAPINFO
     INT cy;
 } OEMBITMAPINFO, *POEMBITMAPINFO;
 
+typedef enum _OBI_TYPES
+{
+    OBI_CLOSE = 0,
+    OBI_UPARROW = 46,
+    OBI_UPARROWI = 49,
+    OBI_DNARROW = 50,
+    OBI_DNARROWI = 53,
+    OBI_MNARROW = 62,
+    OBI_CTYPES = 93
+} OBI_TYPES;
+
 typedef struct tagMBSTRING
 {
     WCHAR szName[16];
@@ -965,7 +978,7 @@ typedef struct _PERUSERSERVERINFO
     DWORD dwKeyCache;
     DWORD dwAsyncKeyCache;
     ULONG cCaptures;
-    OEMBITMAPINFO oembmi[93];
+    OEMBITMAPINFO oembmi[OBI_CTYPES];
     RECT rcScreenReal;
     USHORT BitCount;
     USHORT dmLogPixels;
@@ -1027,6 +1040,8 @@ typedef struct _PROPLISTITEM
     HANDLE Data;
 } PROPLISTITEM, *PPROPLISTITEM;
 
+#define PROPERTY_FLAG_SYSTEM 1
+
 typedef struct _PROPERTY
 {
     LIST_ENTRY PropListEntry;
@@ -1044,8 +1059,8 @@ typedef struct _BROADCASTPARM
     LUID luid;
 } BROADCASTPARM, *PBROADCASTPARM;
 
-PTHREADINFO GetW32ThreadInfo(VOID);
-PPROCESSINFO GetW32ProcessInfo(VOID);
+struct _THREADINFO *GetW32ThreadInfo(VOID);
+struct _PROCESSINFO *GetW32ProcessInfo(VOID);
 
 typedef struct _WNDMSG
 {
@@ -1115,12 +1130,12 @@ typedef struct tagCURSORDATA
     ULONG bpp;
     ULONG cx;
     ULONG cy;
-    INT cpcur;
-    INT cicur;
+    UINT cpcur;
+    UINT cicur;
     struct tagCURSORDATA *aspcur;
     DWORD *aicur;
     INT *ajifRate;
-    INT iicur;
+    UINT iicur;
 } CURSORDATA, *PCURSORDATA; /* !dso CURSORDATA */
 
 /* CURSORF_flags: */
@@ -1216,6 +1231,18 @@ NtUserCtxDisplayIOCtl(
     DWORD dwUnknown1,
     DWORD dwUnknown2,
     DWORD dwUnknown3);
+    
+DWORD
+APIENTRY
+NtUserDbgWin32HeapFail(
+    DWORD Unknown0,
+    DWORD Unknown1);
+
+DWORD
+APIENTRY
+NtUserDbgWin32HeapStat(
+    DWORD Unknown0,
+    DWORD Unknown1);
 
 BOOL
 NTAPI
@@ -1682,7 +1709,6 @@ NTAPI
 NtUserChangeDisplaySettings(
     PUNICODE_STRING lpszDeviceName,
     LPDEVMODEW lpDevMode,
-    HWND hwnd,
     DWORD dwflags,
     LPVOID lParam);
 
@@ -1733,11 +1759,18 @@ NtUserCloseWindowStation(
 /* Console commands for NtUserConsoleControl */
 typedef enum _CONSOLECONTROL
 {
-    GuiConsoleWndClassAtom,
+    ConsoleCtrlDesktopConsoleThread = 0,
+    GuiConsoleWndClassAtom = 1,
     ConsoleMakePalettePublic = 5,
     ConsoleAcquireDisplayOwnership,
 } CONSOLECONTROL, *PCONSOLECONTROL;
 
+typedef struct _DESKTOP_CONSOLE_THREAD
+{
+    HDESK DesktopHandle;
+    ULONG_PTR ThreadId;
+} DESKTOP_CONSOLE_THREAD, *PDESKTOP_CONSOLE_THREAD;
+
 NTSTATUS
 APIENTRY
 NtUserConsoleControl(
@@ -2030,7 +2063,7 @@ NTAPI
 NtUserEvent(
     DWORD Unknown0);
 
-DWORD
+INT
 NTAPI
 NtUserExcludeUpdateRgn(
     HDC hDC,
@@ -2437,7 +2470,7 @@ NtUserGetUpdateRect(
     LPRECT lpRect,
     BOOL fErase);
 
-int
+INT
 NTAPI
 NtUserGetUpdateRgn(
     HWND hWnd,
@@ -2680,12 +2713,12 @@ NtUserPaintDesktop(
 DWORD
 NTAPI
 NtUserPaintMenuBar(
-    DWORD dwUnknown1,
-    DWORD dwUnknown2,
-    DWORD dwUnknown3,
-    DWORD dwUnknown4,
-    DWORD dwUnknown5,
-    DWORD dwUnknown6);
+    HWND hWnd,
+    HDC hDC,
+    ULONG left,
+    ULONG right,
+    ULONG top,
+    BOOL bActive);
 
 BOOL
 APIENTRY
@@ -2804,7 +2837,7 @@ NTAPI
 NtUserRegisterClassExWOW(
     WNDCLASSEXW* lpwcx,
     PUNICODE_STRING pustrClassName,
-    PUNICODE_STRING pustrCNVersion,
+    PUNICODE_STRING pustrCVersion,
     PCLSMENUNAME pClassMenuName,
     DWORD fnID,
     DWORD Flags,
@@ -2872,13 +2905,13 @@ NtUserRemoveProp(
     HWND hWnd,
     ATOM Atom);
 
-DWORD
-NTAPI
+HDESK
+APIENTRY
 NtUserResolveDesktop(
-    DWORD dwUnknown1,
-    DWORD dwUnknown2,
-    DWORD dwUnknown3,
-    DWORD dwUnknown4);
+    IN HANDLE ProcessHandle,
+    IN PUNICODE_STRING DesktopPath,
+    DWORD dwUnknown,
+    OUT HWINSTA* phWinSta);
 
 DWORD
 NTAPI
@@ -2990,14 +3023,12 @@ NtUserSetCursorContents(
     HANDLE Handle,
     PICONINFO IconInfo);
 
-#ifdef NEW_CURSORICON
-
 BOOL
 NTAPI
 NtUserSetCursorIconData(
     _In_ HCURSOR hCursor,
-    _In_ PUNICODE_STRING pustrModule,
-    _In_ PUNICODE_STRING puSrcName,
+    _In_opt_ PUNICODE_STRING pustrModule,
+    _In_opt_ PUNICODE_STRING puSrcName,
     _In_ const CURSORDATA *pCursorData);
 
 typedef struct _tagFINDEXISTINGCURICONPARAM
@@ -3014,33 +3045,16 @@ NtUserFindExistingCursorIcon(
     _In_ PUNICODE_STRING pustrRsrc,
     _In_ FINDEXISTINGCURICONPARAM *param);
 
-#else /* NEW_CURSORICON */
-
-BOOL
-NTAPI
-NtUserSetCursorIconData(
-    HANDLE Handle,
-    PBOOL fIcon,
-    POINT *Hotspot,
-    HMODULE hModule,
-    HRSRC hRsrc,
-    HRSRC hGroupRsrc);
-
-HICON
-NTAPI
-NtUserFindExistingCursorIcon(
-    HMODULE hModule,
-    HRSRC hRsrc,
-    LONG cx,
-    LONG cy);
-
-#endif /* NEW_CURSORICON */
-
 DWORD
 NTAPI
 NtUserSetDbgTag(
     DWORD Unknown0,
     DWORD Unknown1);
+    
+DWORD
+APIENTRY
+NtUserSetDbgTagCount(
+    DWORD Unknown0);
 
 HWND
 NTAPI
@@ -3138,8 +3152,7 @@ NtUserSetProp(
 DWORD
 NTAPI
 NtUserSetRipFlags(
-    DWORD Unknown0,
-    DWORD Unknown1);
+    DWORD Unknown0);
 
 DWORD
 NTAPI
@@ -3445,8 +3458,7 @@ NtUserUserHandleGrantAccess(
 BOOL
 NTAPI
 NtUserValidateHandleSecure(
-    HANDLE hHdl,
-    BOOL Restricted);
+    HANDLE hHdl);
 
 BOOL
 NTAPI
@@ -3457,8 +3469,6 @@ NtUserValidateRect(
 BOOL
 APIENTRY
 NtUserValidateTimerCallback(
-    HWND hWnd,
-    WPARAM wParam,
     LPARAM lParam);
 
 DWORD
@@ -3533,58 +3543,6 @@ NtUserGetMonitorInfo(
 
 /* Should be done in usermode */
 
-/* (other FocusedItem values give the position of the focused item) */
-#define NO_SELECTED_ITEM 0xffff
-
-typedef struct tagROSMENUINFO
-{
-    /* ----------- MENUINFO ----------- */
-    DWORD cbSize;
-    DWORD fMask;
-    DWORD dwStyle;
-    UINT cyMax;
-    HBRUSH  hbrBack;
-    DWORD dwContextHelpID;
-    ULONG_PTR dwMenuData;
-    /* ----------- Extra ----------- */
-    ULONG fFlags; /* Menu flags (MF_POPUP, MF_SYSMENU) */
-    UINT iItem; /* Currently focused item */
-    UINT cItems; /* Number of items in the menu */
-    WORD cxMenu; /* Width of the whole menu */
-    WORD cyMenu; /* Height of the whole menu */
-    ULONG cxTextAlign;
-    PWND spwndNotify; /* window receiving the messages for ownerdraw */
-    INT iTop;
-    INT iMaxTop;
-    DWORD dwArrowsOn:2;
-
-    HMENU Self; /* Handle of this menu */
-    HWND Wnd; /* Window containing the menu */
-    BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */
-} ROSMENUINFO, *PROSMENUINFO;
-
-typedef struct tagROSMENUITEMINFO
-{
-    /* ----------- MENUITEMINFOW ----------- */
-    UINT cbSize;
-    UINT fMask;
-    UINT fType;
-    UINT fState;
-    UINT wID;
-    HMENU hSubMenu;
-    HBITMAP hbmpChecked;
-    HBITMAP hbmpUnchecked;
-    DWORD dwItemData;
-    LPWSTR dwTypeData;
-    UINT cch;
-    HBITMAP hbmpItem;
-    /* ----------- Extra ----------- */
-    RECT Rect; /* Item area (relative to menu window) */
-    UINT dxTab; /* X position of text after Tab */
-    LPWSTR lpstr; /* Copy of the text pointer in MenuItem->Text */
-    SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */
-} ROSMENUITEMINFO, *PROSMENUITEMINFO;
-
 HMONITOR
 NTAPI
 NtUserMonitorFromPoint(