Compile user32 with NDK, clean up its headers, and separate it from the intenral win32k stuff

svn path=/trunk/; revision=16157
This commit is contained in:
Alex Ionescu 2005-06-20 18:21:07 +00:00
parent 8e0a6b7b07
commit 88b8879367
12 changed files with 210 additions and 192 deletions

View file

@ -74,13 +74,6 @@ typedef struct
#define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr(pBrush) #define BRUSHOBJ_UnlockBrush(pBrush) GDIOBJ_UnlockObjByPtr(pBrush)
BOOL INTERNAL_CALL BRUSH_Cleanup(PVOID ObjectBody); BOOL INTERNAL_CALL BRUSH_Cleanup(PVOID ObjectBody);
#ifdef __USE_W32API
typedef struct _PATRECT {
RECT r;
HBRUSH hBrush;
} PATRECT, * PPATRECT;
#endif
HBRUSH STDCALL HBRUSH STDCALL
NtGdiCreateBrushIndirect( NtGdiCreateBrushIndirect(
CONST LOGBRUSH *LogBrush); CONST LOGBRUSH *LogBrush);
@ -109,32 +102,6 @@ BOOL STDCALL
NtGdiFixBrushOrgEx( NtGdiFixBrushOrgEx(
VOID); VOID);
BOOL STDCALL
NtGdiPatBlt(
HDC hDC,
INT XLeft,
INT YLeft,
INT Width,
INT Height,
DWORD ROP);
BOOL STDCALL
NtGdiPolyPatBlt(
HDC hDC,
DWORD dwRop,
PPATRECT pRects,
INT cRects,
ULONG Reserved);
BOOL STDCALL
NtGdiPatBlt(
HDC hDC,
INT XLeft,
INT YLeft,
INT Width,
INT Height,
DWORD ROP);
BOOL STDCALL BOOL STDCALL
NtGdiSetBrushOrgEx( NtGdiSetBrushOrgEx(
HDC hDC, HDC hDC,

View file

@ -0,0 +1,23 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: include/win32k/caret.h
* PURPOSE: GDI32/Win32k Caret interface
* PROGRAMMER:
*
*/
#ifndef WIN32K_CARET_H_INCLUDED
#define WIN32K_CARET_H_INCLUDED
typedef struct _THRDCARETINFO
{
HWND hWnd;
HBITMAP Bitmap;
POINT Pos;
SIZE Size;
BYTE Visible;
BYTE Showing;
} THRDCARETINFO, *PTHRDCARETINFO;
#endif /* WIN32K_FONT_H_INCLUDED */

View file

@ -2,9 +2,6 @@
#ifndef __WIN32K_CURSORICON_H #ifndef __WIN32K_CURSORICON_H
#define __WIN32K_CURSORICON_H #define __WIN32K_CURSORICON_H
#include <win32k/dc.h>
#include <win32k/gdiobj.h>
#include <pshpack1.h> #include <pshpack1.h>
/* Structures for reading icon/cursor files and resources */ /* Structures for reading icon/cursor files and resources */

View file

@ -1,7 +1,9 @@
#ifndef __WIN32K_NTUSER_H #ifndef __WIN32K_NTUSER_H
#define __WIN32K_NTUSER_H #define __WIN32K_NTUSER_H
#ifndef _NTNDK_
#include <ddk/ntapi.h> #include <ddk/ntapi.h>
#endif
#define WM_SYSTIMER 280 #define WM_SYSTIMER 280

View file

@ -1,6 +1,37 @@
#ifndef __WIN32K_PAINT_H #ifndef __WIN32K_PAINT_H
#define __WIN32K_PAINT_H #define __WIN32K_PAINT_H
typedef struct _PATRECT {
RECT r;
HBRUSH hBrush;
} PATRECT, * PPATRECT;
BOOL STDCALL
NtGdiPatBlt(
HDC hDC,
INT XLeft,
INT YLeft,
INT Width,
INT Height,
DWORD ROP);
BOOL STDCALL
NtGdiPolyPatBlt(
HDC hDC,
DWORD dwRop,
PPATRECT pRects,
INT cRects,
ULONG Reserved);
BOOL STDCALL
NtGdiPatBlt(
HDC hDC,
INT XLeft,
INT YLeft,
INT Width,
INT Height,
DWORD ROP);
BOOL STDCALL NtGdiGdiFlush (VOID); BOOL STDCALL NtGdiGdiFlush (VOID);
DWORD STDCALL NtGdiGdiGetBatchLimit (VOID); DWORD STDCALL NtGdiGdiGetBatchLimit (VOID);
DWORD STDCALL NtGdiGdiSetBatchLimit (DWORD Limit); DWORD STDCALL NtGdiGdiSetBatchLimit (DWORD Limit);

View file

@ -1 +1,2 @@
HPEN STDCALL GetSysColorPen (int nIndex); HPEN STDCALL GetSysColorPen (int nIndex);
void DrawCaret(HWND hWnd, PTHRDCARETINFO CaretInfo);

View file

@ -1,156 +1,34 @@
/* /*
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS user32.dll * PROJECT: ReactOS System Libraries
* FILE: include/user32.h * FILE: lib/user32/include/user32.h
* PURPOSE: Global user32 definitions * PURPOSE: Win32 User Library
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
*/ */
/* INCLUDES ******************************************************************/
#ifndef USER32_H #ifndef USER32_H
#define USER32_H #define USER32_H
#include <ctype.h> /* SDK/NDK Headers */
#include <stdio.h>
#include <limits.h>
#include <windows.h> #include <windows.h>
#include <windowsx.h> #include <windowsx.h>
#define NTOS_MODE_USER #define NTOS_MODE_USER
#include <ntos.h> #include <ndk/ntndk.h>
#include <win32k/win32k.h>
/* External Win32K Headers */
#include <win32k/ntuser.h>
#include <win32k/caret.h>
#include <win32k/callback.h> #include <win32k/callback.h>
#include "accel.h" #include <win32k/cursoricon.h>
#include "cursor.h" #include <win32k/menu.h>
#ifndef __WINE__ #include <win32k/paint.h>
#include "debug.h"
#endif
#include "draw.h"
#include "menu.h"
#include "message.h"
#include "regcontrol.h"
#include "resource.h"
#include "scroll.h"
#include "strpool.h"
#include "window.h"
#include "winpos.h"
#include "winsta.h"
extern HINSTANCE User32Instance; /* Internal User32 Headers */
#include "user32p.h"
typedef struct _USER32_THREAD_DATA /* FIXME: FILIP */
{ HGDIOBJ STDCALL NtGdiSelectObject(HDC hDC, HGDIOBJ hGDIObj);
MSG LastMessage;
HKL KeyboardLayoutHandle;
} USER32_THREAD_DATA, *PUSER32_THREAD_DATA;
PUSER32_THREAD_DATA User32GetThreadData();
/* a copy of this structure is in subsys/win32k/include/caret.h */
typedef struct _THRDCARETINFO
{
HWND hWnd;
HBITMAP Bitmap;
POINT Pos;
SIZE Size;
BYTE Visible;
BYTE Showing;
} THRDCARETINFO, *PTHRDCARETINFO;
void InitStockObjects(void);
VOID CreateFrameBrushes(VOID);
VOID DeleteFrameBrushes(VOID);
void DrawCaret(HWND hWnd, PTHRDCARETINFO CaretInfo);
#define NtUserMsqSetWakeMask(dwWaitMask) \
(HANDLE)NtUserCallOneParam(dwWaitMask, ONEPARAM_ROUTINE_MSQSETWAKEMASK)
#define NtUserMsqClearWakeMask() \
NtUserCallNoParam(NOPARAM_ROUTINE_MSQCLEARWAKEMASK)
LONG WINAPI RegCloseKey(HKEY);
LONG WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
#ifdef __USE_W32API
NTSTATUS STDCALL ZwCallbackReturn(PVOID Result,
ULONG ResultLength,
NTSTATUS Status);
#endif
#define NtUserAnyPopup() \
(BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_ANYPOPUP)
#define NtUserValidateRgn(hWnd, hRgn) \
(BOOL)NtUserCallTwoParam((DWORD)hWnd, (DWORD)hRgn, TWOPARAM_ROUTINE_VALIDATERGN)
#define NtUserSetWindowContextHelpId(hWnd, dwContextHelpId) \
(BOOL)NtUserCallTwoParam((DWORD)hwnd, dwContextHelpId, TWOPARAM_ROUTINE_SETWNDCONTEXTHLPID)
#define NtUserSetCaretPos(X, Y) \
(BOOL)NtUserCallTwoParam((DWORD)X, (DWORD)Y, TWOPARAM_ROUTINE_SETCARETPOS)
#define NtUserSetGUIThreadHandle(field, hwnd) \
(BOOL)NtUserCallTwoParam((DWORD)field, (DWORD)hwnd, TWOPARAM_ROUTINE_SETGUITHRDHANDLE)
#define NtUserSetMenuItemRect(menu, mir) \
(BOOL)NtUserCallTwoParam((DWORD)menu, (DWORD)mir, TWOPARAM_ROUTINE_SETMENUITEMRECT)
#define NtUserSetMenuBarHeight(menu, height) \
(BOOL)NtUserCallTwoParam((DWORD)menu, (DWORD)height, TWOPARAM_ROUTINE_SETMENUBARHEIGHT)
#define NtUserGetWindowInfo(hwnd, pwi) \
(BOOL)NtUserCallTwoParam((DWORD)hwnd, (DWORD)pwi, TWOPARAM_ROUTINE_GETWINDOWINFO)
#define NtUserRegisterLogonProcess(hproc, x) \
(BOOL)NtUserCallTwoParam((DWORD)hproc, (DWORD)x, TWOPARAM_ROUTINE_REGISTERLOGONPROC)
#define NtUserGetSysColorBrushes(HBrushes, count) \
(BOOL)NtUserCallTwoParam((DWORD)(HBrushes), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORBRUSHES)
#define NtUserGetSysColorPens(HPens, count) \
(BOOL)NtUserCallTwoParam((DWORD)(HPens), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORPENS)
#define NtUserGetSysColors(ColorRefs, count) \
(BOOL)NtUserCallTwoParam((DWORD)(ColorRefs), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORS)
#define NtUserSetSysColors(ColorRefs, count) \
(BOOL)NtUserCallTwoParam((DWORD)(ColorRefs), (DWORD)(count), TWOPARAM_ROUTINE_SETSYSCOLORS)
#define NtUserSetCaretBlinkTime(uMSeconds) \
(BOOL)NtUserCallOneParam((DWORD)uMSeconds, ONEPARAM_ROUTINE_SETCARETBLINKTIME)
#define NtUserEnumClipboardFormats(format) \
(UINT)NtUserCallOneParam(format, ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS)
#define NtUserWindowFromDC(hDC) \
(HWND)NtUserCallOneParam((DWORD)hDC, ONEPARAM_ROUTINE_WINDOWFROMDC)
#define NtUserSwitchCaretShowing(CaretInfo) \
(BOOL)NtUserCallOneParam((DWORD)CaretInfo, ONEPARAM_ROUTINE_SWITCHCARETSHOWING)
#define NtUserSwapMouseButton(fSwap) \
(BOOL)NtUserCallOneParam((DWORD)fSwap, ONEPARAM_ROUTINE_SWAPMOUSEBUTTON)
#define NtUserGetMenu(hWnd) \
(HMENU)NtUserCallOneParam((DWORD)hWnd, ONEPARAM_ROUTINE_GETMENU)
#define NtUserSetMessageExtraInfo(lParam) \
(LPARAM)NtUserCallOneParam((DWORD)lParam, ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO)
#define NtUserIsWindowUnicode(hWnd) \
(BOOL)NtUserCallOneParam((DWORD)hWnd, ONEPARAM_ROUTINE_ISWINDOWUNICODE)
#define NtUserGetWindowContextHelpId(hwnd) \
NtUserCallOneParam((DWORD)hwnd, ONEPARAM_ROUTINE_GETWNDCONTEXTHLPID)
#define NtUserGetWindowInstance(hwnd) \
(HINSTANCE)NtUserCallOneParam((DWORD)hwnd, ONEPARAM_ROUTINE_GETWINDOWINSTANCE)
#define NtUserGetCursorPos(lpPoint) \
(BOOL)NtUserCallOneParam((DWORD)lpPoint, ONEPARAM_ROUTINE_GETCURSORPOSITION)
#define NtUserIsWindowInDestroy(hWnd) \
(BOOL)NtUserCallOneParam((DWORD)hWnd, ONEPARAM_ROUTINE_ISWINDOWINDESTROY)
#define NtUserEnableProcessWindowGhosting(bEnable) \
NtUserCallOneParam((DWORD)bEnable, ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING)
#endif /* USER32_H */ #endif /* USER32_H */

View file

@ -0,0 +1,128 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS System Libraries
* FILE: lib/user32/include/user32p.h
* PURPOSE: Win32 User Library Private Headers
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
*/
/* INCLUDES ******************************************************************/
#ifndef USER32_PRIVATE_H
#define USER32_PRIVATE_H
/* Private User32 Headers */
#include "accel.h"
#include "cursor.h"
#ifndef __WINE__
#include "debug.h"
#endif
#include "draw.h"
#include "menu.h"
#include "message.h"
#include "regcontrol.h"
#include "resource.h"
#include "scroll.h"
#include "strpool.h"
#include "window.h"
#include "winpos.h"
#include "winsta.h"
/* One/Two Param Functions */
#define NtUserMsqSetWakeMask(dwWaitMask) \
(HANDLE)NtUserCallOneParam(dwWaitMask, ONEPARAM_ROUTINE_MSQSETWAKEMASK)
#define NtUserMsqClearWakeMask() \
NtUserCallNoParam(NOPARAM_ROUTINE_MSQCLEARWAKEMASK)
#define NtUserAnyPopup() \
(BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_ANYPOPUP)
#define NtUserValidateRgn(hWnd, hRgn) \
(BOOL)NtUserCallTwoParam((DWORD)hWnd, (DWORD)hRgn, TWOPARAM_ROUTINE_VALIDATERGN)
#define NtUserSetWindowContextHelpId(hWnd, dwContextHelpId) \
(BOOL)NtUserCallTwoParam((DWORD)hwnd, dwContextHelpId, TWOPARAM_ROUTINE_SETWNDCONTEXTHLPID)
#define NtUserSetCaretPos(X, Y) \
(BOOL)NtUserCallTwoParam((DWORD)X, (DWORD)Y, TWOPARAM_ROUTINE_SETCARETPOS)
#define NtUserSetGUIThreadHandle(field, hwnd) \
(BOOL)NtUserCallTwoParam((DWORD)field, (DWORD)hwnd, TWOPARAM_ROUTINE_SETGUITHRDHANDLE)
#define NtUserSetMenuItemRect(menu, mir) \
(BOOL)NtUserCallTwoParam((DWORD)menu, (DWORD)mir, TWOPARAM_ROUTINE_SETMENUITEMRECT)
#define NtUserSetMenuBarHeight(menu, height) \
(BOOL)NtUserCallTwoParam((DWORD)menu, (DWORD)height, TWOPARAM_ROUTINE_SETMENUBARHEIGHT)
#define NtUserGetWindowInfo(hwnd, pwi) \
(BOOL)NtUserCallTwoParam((DWORD)hwnd, (DWORD)pwi, TWOPARAM_ROUTINE_GETWINDOWINFO)
#define NtUserRegisterLogonProcess(hproc, x) \
(BOOL)NtUserCallTwoParam((DWORD)hproc, (DWORD)x, TWOPARAM_ROUTINE_REGISTERLOGONPROC)
#define NtUserGetSysColorBrushes(HBrushes, count) \
(BOOL)NtUserCallTwoParam((DWORD)(HBrushes), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORBRUSHES)
#define NtUserGetSysColorPens(HPens, count) \
(BOOL)NtUserCallTwoParam((DWORD)(HPens), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORPENS)
#define NtUserGetSysColors(ColorRefs, count) \
(BOOL)NtUserCallTwoParam((DWORD)(ColorRefs), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORS)
#define NtUserSetSysColors(ColorRefs, count) \
(BOOL)NtUserCallTwoParam((DWORD)(ColorRefs), (DWORD)(count), TWOPARAM_ROUTINE_SETSYSCOLORS)
#define NtUserSetCaretBlinkTime(uMSeconds) \
(BOOL)NtUserCallOneParam((DWORD)uMSeconds, ONEPARAM_ROUTINE_SETCARETBLINKTIME)
#define NtUserEnumClipboardFormats(format) \
(UINT)NtUserCallOneParam(format, ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS)
#define NtUserWindowFromDC(hDC) \
(HWND)NtUserCallOneParam((DWORD)hDC, ONEPARAM_ROUTINE_WINDOWFROMDC)
#define NtUserSwitchCaretShowing(CaretInfo) \
(BOOL)NtUserCallOneParam((DWORD)CaretInfo, ONEPARAM_ROUTINE_SWITCHCARETSHOWING)
#define NtUserSwapMouseButton(fSwap) \
(BOOL)NtUserCallOneParam((DWORD)fSwap, ONEPARAM_ROUTINE_SWAPMOUSEBUTTON)
#define NtUserGetMenu(hWnd) \
(HMENU)NtUserCallOneParam((DWORD)hWnd, ONEPARAM_ROUTINE_GETMENU)
#define NtUserSetMessageExtraInfo(lParam) \
(LPARAM)NtUserCallOneParam((DWORD)lParam, ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO)
#define NtUserIsWindowUnicode(hWnd) \
(BOOL)NtUserCallOneParam((DWORD)hWnd, ONEPARAM_ROUTINE_ISWINDOWUNICODE)
#define NtUserGetWindowContextHelpId(hwnd) \
NtUserCallOneParam((DWORD)hwnd, ONEPARAM_ROUTINE_GETWNDCONTEXTHLPID)
#define NtUserGetWindowInstance(hwnd) \
(HINSTANCE)NtUserCallOneParam((DWORD)hwnd, ONEPARAM_ROUTINE_GETWINDOWINSTANCE)
#define NtUserGetCursorPos(lpPoint) \
(BOOL)NtUserCallOneParam((DWORD)lpPoint, ONEPARAM_ROUTINE_GETCURSORPOSITION)
#define NtUserIsWindowInDestroy(hWnd) \
(BOOL)NtUserCallOneParam((DWORD)hWnd, ONEPARAM_ROUTINE_ISWINDOWINDESTROY)
#define NtUserEnableProcessWindowGhosting(bEnable) \
NtUserCallOneParam((DWORD)bEnable, ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING)
/* Internal Thread Data */
extern HINSTANCE User32Instance;
typedef struct _USER32_THREAD_DATA
{
MSG LastMessage;
HKL KeyboardLayoutHandle;
} USER32_THREAD_DATA, *PUSER32_THREAD_DATA;
PUSER32_THREAD_DATA User32GetThreadData();
#endif
/* EOF */

View file

@ -2,6 +2,8 @@
/* FIXME: Belongs to some header. */ /* FIXME: Belongs to some header. */
WINBOOL STDCALL GdiDllInitialize(HANDLE, DWORD, LPVOID); WINBOOL STDCALL GdiDllInitialize(HANDLE, DWORD, LPVOID);
void InitStockObjects(void);
VOID DeleteFrameBrushes(VOID);
#ifdef DBG #ifdef DBG
@ -13,7 +15,6 @@ DWORD DebugTraceLevel = MIN_TRACE;
extern CRITICAL_SECTION gcsMPH; extern CRITICAL_SECTION gcsMPH;
static ULONG User32TlsIndex; static ULONG User32TlsIndex;
HINSTANCE User32Instance; HINSTANCE User32Instance;
HWINSTA ProcessWindowStation; HWINSTA ProcessWindowStation;
PUSER32_THREAD_DATA PUSER32_THREAD_DATA

View file

@ -1891,7 +1891,7 @@ GetDlgItemInt(
if (!endptr || (endptr == str)) /* Conversion was unsuccessful */ if (!endptr || (endptr == str)) /* Conversion was unsuccessful */
return 0; return 0;
/* FIXME: errno? */ /* FIXME: errno? */
if (((result == LONG_MIN) || (result == LONG_MAX))/* && (errno == ERANGE) */) if (((result == 0) || (result == 0xFFFFFFFF))/* && (errno == ERANGE) */)
return 0; return 0;
} }
else else
@ -1900,7 +1900,7 @@ GetDlgItemInt(
if (!endptr || (endptr == str)) /* Conversion was unsuccessful */ if (!endptr || (endptr == str)) /* Conversion was unsuccessful */
return 0; return 0;
/* FIXME: errno? */ /* FIXME: errno? */
if ((result == LONG_MAX)/* && (errno == ERANGE) */) return 0; if ((result == 0xFFFFFFFF)/* && (errno == ERANGE) */) return 0;
} }
if (lpTranslated) *lpTranslated = TRUE; if (lpTranslated) *lpTranslated = TRUE;
return (UINT)result; return (UINT)result;

View file

@ -6,17 +6,6 @@
#define IDCARETTIMER (0xffff) #define IDCARETTIMER (0xffff)
/* a copy of this structure is in lib/user32/include/user32.h */
typedef struct _THRDCARETINFO
{
HWND hWnd;
HBITMAP Bitmap;
POINT Pos;
SIZE Size;
BYTE Visible;
BYTE Showing;
} THRDCARETINFO, *PTHRDCARETINFO;
BOOL FASTCALL BOOL FASTCALL
IntDestroyCaret(PW32THREAD Win32Thread); IntDestroyCaret(PW32THREAD Win32Thread);

View file

@ -17,6 +17,7 @@
#include <win32k/win32k.h> #include <win32k/win32k.h>
#include <win32k/callback.h> #include <win32k/callback.h>
#include <win32k/caret.h>
#include <csrss/csrss.h> #include <csrss/csrss.h>
#include <internal/ntoskrnl.h> #include <internal/ntoskrnl.h>