#define __WIN32K_NTUSER_H
typedef struct _PROCESSINFO *PPROCESSINFO;
+typedef struct _THREADINFO *PTHREADINFO;
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;
{
PVOID pvDesktopBase;
PVOID pvDesktopLimit;
+ struct _WND *spwnd;
+ DWORD fsHooks;
+ struct tagHOOK * aphkStart[16];
- HANDLE hKernelHeap;
- ULONG_PTR HeapLimit;
HWND hTaskManWindow;
HWND hProgmanWindow;
HWND hShellWindow;
- struct _WND *Wnd;
union
{
DWORD dwcPumpHook;
} CLIENTTHREADINFO, *PCLIENTTHREADINFO;
-typedef struct _W32THREADINFO
-{
- PPROCESSINFO ppi; /* [KERNEL] */
- PDESKTOPINFO pDeskInfo;
- ULONG fsHooks;
-} W32THREADINFO, *PW32THREADINFO;
-
typedef struct _HEAD
{
HANDLE h;
DWORD cLockObj;
} HEAD, *PHEAD;
+typedef struct _THROBJHEAD
+{
+ HEAD;
+ PTHREADINFO pti;
+} THROBJHEAD, *PTHROBJHEAD;
+
typedef struct _THRDESKHEAD
{
- HANDLE h;
- DWORD cLockObj;
- PW32THREADINFO pti;
+ THROBJHEAD;
struct _DESKTOP *rpdesk;
PVOID pSelf;
} THRDESKHEAD, *PTHRDESKHEAD;
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 */
UNICODE_STRING ModuleName; /* Module name for global hooks */
} HOOK, *PHOOK;
+/* THREADINFO Flags */
+#define TIF_INCLEANUP 0x00000001
+#define TIF_16BIT 0x00000002
+#define TIF_SYSTEMTHREAD 0x00000004
+#define TIF_CSRSSTHREAD 0x00000008
+#define TIF_TRACKRECTVISIBLE 0x00000010
+#define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
+#define TIF_DONTATTACHQUEUE 0x00000040
+#define TIF_DONTJOURNALATTACH 0x00000080
+#define TIF_WOW64 0x00000100
+#define TIF_INACTIVATEAPPMSG 0x00000200
+#define TIF_SPINNING 0x00000400
+#define TIF_PALETTEAWARE 0x00000800
+#define TIF_SHAREDWOW 0x00001000
+#define TIF_FIRSTIDLE 0x00002000
+#define TIF_WAITFORINPUTIDLE 0x00004000
+#define TIF_MOVESIZETRACKING 0x00008000
+#define TIF_VDMAPP 0x00010000
+#define TIF_DOSEMULATOR 0x00020000
+#define TIF_GLOBALHOOKER 0x00040000
+#define TIF_DELAYEDEVENT 0x00080000
+#define TIF_MSGPOSCHANGED 0x00100000
+#define TIF_SHUTDOWNCOMPLETE 0x00200000
+#define TIF_IGNOREPLAYBACKDELAY 0x00400000
+#define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
+#define TIF_GUITHREADINITIALIZED 0x02000000
+#define TIF_DISABLEIME 0x04000000
+#define TIF_INGETTEXTLENGTH 0x08000000
+#define TIF_ANSILENGTH 0x10000000
+#define TIF_DISABLEHOOKS 0x20000000
+
typedef struct _CALLBACKWND
{
HWND hWnd;
PVOID pvWnd;
} CALLBACKWND, *PCALLBACKWND;
-#define CI_CURTHPRHOOK 0x00000010
+#define CI_TRANSACTION 0x00000001
+#define CI_QUEUEMSG 0x00000002
+#define CI_WOW 0x00000004
+#define CI_INITTHREAD 0x00000008
+#define CI_CURTHPRHOOK 0x00000010
+#define CI_CLASSESREGISTERED 0x00000020
+#define CI_IMMACTIVATE 0x00000040
typedef struct _CLIENTINFO
{
DWORD dwExpWinVer;
DWORD dwCompatFlags;
DWORD dwCompatFlags2;
- DWORD dwTIFlags;
+ DWORD dwTIFlags; // ThreadInfo TIF_Xxx flags for User space.
PDESKTOPINFO pDeskInfo;
ULONG_PTR ulClientDelta;
PHOOK phkCurrent;
PPROCESSINFO ppi;
} CLIENTINFO, *PCLIENTINFO;
-/* Make sure it fits exactly into the TEB */
-C_ASSERT(sizeof(CLIENTINFO) == FIELD_OFFSET(TEB, glDispatchTable) - FIELD_OFFSET(TEB, Win32ClientInfo));
+/* Make sure it fits into the TEB */
+C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo));
#define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
+/* 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
system window classes during user32 initialization */
- UNICODE_STRING ClassName;
+ PWSTR ClassName;
UINT Style;
WNDPROC ProcW;
- WNDPROC ProcA;
UINT ExtraBytes;
HICON hCursor;
HBRUSH hBrush;
- UINT ClassId;
+ WORD fiId;
+ WORD iCls;
} REGISTER_SYSCLASS, *PREGISTER_SYSCLASS;
typedef struct _CLSMENUNAME
typedef enum _GETCPD
{
- UserGetCPDU2A = 0x01,
- UserGetCPDA2U = 0X02,
+ UserGetCPDA2U = 0x01, // " Unicode "
+ UserGetCPDU2A = 0X02, // " Ansi "
UserGetCPDClass = 0X10,
UserGetCPDWindow = 0X20,
UserGetCPDDialog = 0X40,
PROCDESKHEAD head;
struct _CALLPROCDATA *spcpdNext;
WNDPROC pfnClientPrevious;
- union
- {
- GETCPD wType;
- UINT Unicode : 1;
- };
+ GETCPD wType;
} CALLPROCDATA, *PCALLPROCDATA;
#define CSF_SERVERSIDEPROC 0x0001
ULONG cWndReferenceCount;
UINT style;
WNDPROC lpfnWndProc;
- union
- {
- WNDPROC WndProcExtra;
- PCALLPROCDATA CallProc;
- };
INT cbclsExtra;
INT cbwndExtra;
HINSTANCE hModule;
HANDLE hIconSm; /* FIXME - Use pointer! */
//PCURSOR spicnSm;
- UINT Destroying : 1; // CSF_WOWDEFERDESTROY
UINT Unicode : 1; // !CSF_ANSIPROC
- UINT System : 1; // CSF_SYSTEMCLASS
- UINT Global : 1; // CS_GLOBALCLASS
+ UINT Global : 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
UINT MenuNameIsString : 1;
- UINT NotUsed : 27;
+ UINT NotUsed : 29;
} CLS, *PCLS;
/* 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 0X01000000
-#define WS_MINIMIZED 0X20000000
+#define WS_MAXIMIZED WS_MAXIMIZE
+#define WS_MINIMIZED WS_MINIMIZE
/* ExStyles2 */
#define WS_EX2_CLIPBOARDLISTENER 0X00000001
RECT rcWindow;
RECT rcClient;
WNDPROC lpfnWndProc;
- union
- {
- /* Pointer to a call procedure handle */
- PCALLPROCDATA CallProc;
- /* Extra Wnd proc (windows of system classes) */
- WNDPROC WndProcExtra;
- };
-
/* Pointer to the window class. */
PCLS pcls;
HRGN hrgnUpdate;
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;
UINT Unicode : 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
/* Indicates whether the window is derived from a system class */
- UINT IsSystem : 1; // System class ?
UINT InternalPosInitialized : 1;
UINT HideFocus : 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
UINT HideAccel : 1; // WS_EX_UISTATEKBACCELHIDDEN ?
#define FNID_LAST 0x02B9
#define FNID_NUM FNID_LAST - FNID_FIRST + 1
+#define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
#define FNID_DDEML 0x2000 // Registers DDEML
#define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
// Seen during WM_CREATE on error exit too.
+#define FNID_FREED 0x8000 // Window being Freed...
+
+#define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
+
+#define GETPFNCLIENTA(fnid)\
+ (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
+#define GETPFNCLIENTW(fnid)\
+ (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
+
+#define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
// ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
#define ICLS_BUTTON 0
#define ICLS_DDEMLSERVERA 13
#define ICLS_DDEMLSERVERW 14
#define ICLS_IME 15
-#define ICLS_DESKTOP 16
-#define ICLS_DIALOG 17
-#define ICLS_MENU 18
-#define ICLS_SWITCH 19
-#define ICLS_ICONTITLE 20
-#define ICLS_TOOLTIPS 21
+#define ICLS_GHOST 16
+#define ICLS_DESKTOP 17
+#define ICLS_DIALOG 18
+#define ICLS_MENU 19
+#define ICLS_SWITCH 20
+#define ICLS_ICONTITLE 21
+#define ICLS_TOOLTIPS 22
#if (_WIN32_WINNT <= 0x0501)
#define ICLS_UNKNOWN 22
#define ICLS_NOTUSED 23
#else
-#define ICLS_SYSSHADOW 22
-#define ICLS_HWNDMESSAGE 23
-#define ICLS_UNKNOWN 24
+#define ICLS_SYSSHADOW 23
+#define ICLS_HWNDMESSAGE 24
#define ICLS_NOTUSED 25
#endif
#define ICLS_END 31
#define COLOR_LAST COLOR_MENUBAR
#define MAX_MB_STRINGS 11
+#define SRVINFO_APIHOOK 0x0010
#define SRVINFO_METRICS 0x0020
typedef struct tagOEMBITMAPINFO
DWORD dwSRVIFlags;
ULONG_PTR cHandleEntries;
PFN_FNID mpFnidPfn[FNID_NUM];
- WNDPROC aStoCidPfn[7];
+ WNDPROC aStoCidPfn[FNID_NUMSERVERPROC];
USHORT mpFnid_serverCBWndProc[FNID_NUM];
PFNCLIENT apfnClientA;
PFNCLIENT apfnClientW;
LUID luid;
} BROADCASTPARM, *PBROADCASTPARM;
-PW32THREADINFO GetW32ThreadInfo(VOID);
+PTHREADINFO GetW32ThreadInfo(VOID);
PPROCESSINFO GetW32ProcessInfo(VOID);
typedef struct _WNDMSG
//
#define DCX_USESTYLE 0x00010000
#define DCX_KEEPCLIPRGN 0x00040000
+#define DCX_KEEPLAYOUT 0x40000000
+#define DCX_PROCESSOWNED 0x80000000
//
// Non SDK Queue message types.
LPARAM lParam,
BOOL Ansi);
-DWORD
+DWORD_PTR
NTAPI
NtUserCallNoParam(
DWORD Routine);
-DWORD
+DWORD_PTR
NTAPI
NtUserCallOneParam(
- DWORD Param,
+ DWORD_PTR Param,
DWORD Routine);
-DWORD
+DWORD_PTR
NTAPI
NtUserCallTwoParam(
- DWORD Param1,
- DWORD Param2,
+ DWORD_PTR Param1,
+ DWORD_PTR Param2,
DWORD Routine);
BOOL
HWND
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,
+ 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,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam,
- DWORD dwFlags, // |= 1 == Ansi
+ DWORD dwFlags,
PVOID acbiBuffer);
-#endif
HWINSTA
NTAPI
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
THREADSTATE_GETINPUTSTATE
};
-DWORD
+DWORD_PTR
NTAPI
NtUserGetThreadState(
DWORD Routine);
#define QUERY_WINDOW_ACTIVE 0x02
#define QUERY_WINDOW_FOCUS 0x03
#define QUERY_WINDOW_ISHUNG 0x04
+#define QUERY_WINDOW_REAL_ID 0x05
DWORD
NTAPI
NtUserQueryWindow(
IN UINT uiNumDevices,
IN UINT cbSize);
-DWORD
+BOOL
NTAPI
NtUserRegisterUserApiHook(
- DWORD dwUnknown1,
- DWORD dwUnknown2);
+ PUNICODE_STRING m_dllname1,
+ PUNICODE_STRING m_funname1,
+ DWORD dwUnknown3,
+ DWORD dwUnknown4);
BOOL
NTAPI
NtUserResolveDesktopForWOW(
DWORD Unknown0);
-DWORD
+BOOL
NTAPI
NtUserSBGetParms(
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2,
- DWORD Unknown3);
+ HWND hwnd,
+ int fnBar,
+ PSBDATA pSBData,
+ LPSCROLLINFO lpsi);
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
NTAPI
NtUserTranslateMessage(
LPMSG lpMsg,
- HKL dwhkl );
+ UINT flags );
BOOL
NTAPI
NtUserUnregisterHotKey(HWND hWnd,
int id);
-DWORD
+BOOL
NTAPI
NtUserUnregisterUserApiHook(VOID);
{
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_GETMENU 0xfffe0001 // usermode
-#define ONEPARAM_ROUTINE_ISWINDOWUNICODE 0xfffe0002
-#define ONEPARAM_ROUTINE_GETCARETINFO 0xfffe0007
#define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
#define ONEPARAM_ROUTINE_ISWINDOWINDESTROY 0xfffe000c
#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
-#define ONEPARAM_ROUTINE_GETWINDOWINSTANCE 0xfffe0010
#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_SETMENUITEMRECT 0xfffd0051
#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
#define MSQ_STATE_CAPTURE 0x1
#define MSQ_STATE_ACTIVE 0x2
#define MSQ_STATE_MENUOWNER 0x4
#define MSQ_STATE_MOVESIZE 0x5
#define MSQ_STATE_CARET 0x6
-#define TWOPARAM_ROUTINE_SETWNDCONTEXTHLPID 0xfffd0058 // use HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
#define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
-#define TWOPARAM_ROUTINE_GETWINDOWINFO 0xfffd0061
#define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
-#define TWOPARAM_ROUTINE_ROS_ISACTIVEICON 0x1001
-#define TWOPARAM_ROUTINE_ROS_NCDESTROY 0x1002
-#define TWOPARAM_ROUTINE_ROS_REGSYSCLASSES 0x1003
#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
DWORD
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
OUT LPMONITORINFO pMonitorInfo);
/* Should be done in usermode */
-BOOL
-NTAPI
-NtUserGetScrollInfo(
- HWND hwnd,
- int fnBar,
- LPSCROLLINFO lpsi);
-
-HWND
-NTAPI
-NtUserGetWindow(HWND hWnd, UINT Relationship);
-
-/* Should be done in usermode and use NtUserGetCPD. */
-LONG
-NTAPI
-NtUserGetWindowLong(HWND hWnd, DWORD Index, BOOL Ansi);
-
/* (other FocusedItem values give the position of the focused item) */
#define NO_SELECTED_ITEM 0xffff
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