[headers]
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Sun, 18 Sep 2011 13:12:44 +0000 (13:12 +0000)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Sun, 18 Sep 2011 13:12:44 +0000 (13:12 +0000)
- Begin merging from themes branch

svn path=/trunk/; revision=53735

reactos/dll/win32/user32/misc/usrapihk.c
reactos/include/reactos/undocuser.h
reactos/include/reactos/uxundoc.h [new file with mode: 0644]
reactos/include/reactos/win32k/callback.h

index 28f2208..67bbada 100644 (file)
@@ -260,7 +260,7 @@ InitUserApiHook(HINSTANCE hInstance, USERAPIHOOKPROC pfn)
 
   RtlEnterCriticalSection(&gcsUserApiHook);
 
-  if (!pfn(uahLoadInit,(ULONG_PTR)&uah) ||  // Swap data, User32 to and Uxtheme from!
+  if (!pfn(uahLoadInit,&uah) ||  // Swap data, User32 to and Uxtheme from!
        uah.ForceResetUserApiHook != (FARPROC)ForceResetUserApiHook ||
        uah.size <= 0 )
   {
index 8ffbcbe..d00aa24 100644 (file)
 #define WS_EX_SETANSICREATOR           0x80000000 // For WNDS_ANSICREATOR
 
 /* Non SDK Window Message types. */
-#define WM_SETVISIBLE      0x00000009
-#define WM_ALTTABACTIVE    0x00000029
-#define WM_ISACTIVEICON    0x00000035
-#define WM_QUERYPARKICON   0x00000036
-#define WM_CLIENTSHUTDOWN  0x0000003B
-#define WM_COPYGLOBALDATA  0x00000049
-#define WM_LOGONNOTIFY     0x0000004c
-#define WM_KEYF1           0x0000004d
-#define WM_SYSTIMER        0x00000118
-#define WM_LBTRACKPOINT    0x00000131
-#define LB_CARETON         0x000001a3
-#define LB_CARETOFF        0x000001a4
-#define WM_DROPOBJECT     0x0000022A
-#define WM_QUERYDROPOBJECT 0x0000022B
-#define WM_BEGINDRAG       0x0000022C
-#define WM_DRAGLOOP           0x0000022D
-#define WM_DRAGSELECT     0x0000022E
-#define WM_DRAGMOVE           0x0000022F
-#define WM_POPUPSYSTEMMENU 0x00000313
-#define WM_CBT             0x000003FF // ReactOS only.
-#define WM_MAXIMUM         0x0001FFFF
+#define WM_SETVISIBLE       0x00000009
+#define WM_ALTTABACTIVE     0x00000029
+#define WM_ISACTIVEICON     0x00000035
+#define WM_QUERYPARKICON    0x00000036
+#define WM_CLIENTSHUTDOWN   0x0000003B
+#define WM_COPYGLOBALDATA   0x00000049
+#define WM_LOGONNOTIFY      0x0000004C
+#define WM_KEYF1            0x0000004D
+#define WM_NCUAHDRAWCAPTION 0x000000AE
+#define WM_NCUAHDRAWFRAME   0x000000AF
+#define WM_SYSTIMER         0x00000118
+#define WM_LBTRACKPOINT     0x00000131
+#define LB_CARETON          0x000001a3
+#define LB_CARETOFF         0x000001a4
+#define WM_DROPOBJECT       0x0000022A
+#define WM_QUERYDROPOBJECT  0x0000022B
+#define WM_BEGINDRAG        0x0000022C
+#define WM_DRAGLOOP            0x0000022D
+#define WM_DRAGSELECT       0x0000022E
+#define WM_DRAGMOVE            0x0000022F
+#define WM_POPUPSYSTEMMENU  0x00000313
+#define WM_UAHINIT          0x0000031b
+#define WM_CBT              0x000003FF // ReactOS only.
+#define WM_MAXIMUM          0x0001FFFF
 
 /* Non SDK DCE types.*/
 #define DCX_USESTYLE     0x00010000
@@ -120,25 +123,8 @@ HWND WINAPI GetProgmanWindow(VOID);
 // User api hook
 //
 
-typedef struct _USERAPIHOOKINFO
-{
-  DWORD m_size;
-  LPCWSTR m_dllname1;
-  LPCWSTR m_funname1;
-  LPCWSTR m_dllname2;
-  LPCWSTR m_funname2;
-} USERAPIHOOKINFO,*PUSERAPIHOOKINFO;
-
-typedef enum _UAPIHK
-{
-  uahLoadInit,
-  uahStop,
-  uahShutdown
-} UAPIHK, *PUAPIHK;
-
-typedef DWORD (CALLBACK * USERAPIHOOKPROC)(UAPIHK State, ULONG_PTR Info);
-
 typedef LRESULT(CALLBACK *WNDPROC_OWP)(HWND,UINT,WPARAM,LPARAM,ULONG_PTR,PDWORD);
+typedef int (WINAPI *SETWINDOWRGN)(HWND hWnd, HRGN hRgn, BOOL bRedraw);
 
 typedef struct _UAHOWP
 {
@@ -146,34 +132,61 @@ typedef struct _UAHOWP
   DWORD  Size;
 } UAHOWP, *PUAHOWP;
 
+#define UAH_HOOK_MESSAGE(uahowp, msg) uahowp.MsgBitArray[msg/8] |= (1 << (msg % 8));
+#define UAH_IS_MESSAGE_HOOKED(uahowp, msg) (uahowp.MsgBitArray[msg/8] & (1 << (msg % 8)))
+#define UAHOWP_MAX_SIZE WM_USER/8
+
 typedef struct tagUSERAPIHOOK
 {
-  DWORD   size;
-  WNDPROC DefWindowProcA;
-  WNDPROC DefWindowProcW;
-  UAHOWP  DefWndProcArray;
-  FARPROC GetScrollInfo;
-  FARPROC SetScrollInfo;
-  FARPROC EnableScrollBar;
-  FARPROC AdjustWindowRectEx;
-  FARPROC SetWindowRgn;
+  DWORD       size;
+  WNDPROC     DefWindowProcA;
+  WNDPROC     DefWindowProcW;
+  UAHOWP      DefWndProcArray;
+  FARPROC     GetScrollInfo;
+  FARPROC     SetScrollInfo;
+  FARPROC     EnableScrollBar;
+  FARPROC     AdjustWindowRectEx;
+  SETWINDOWRGN SetWindowRgn;
   WNDPROC_OWP PreWndProc;
   WNDPROC_OWP PostWndProc;
-  UAHOWP  WndProcArray;
+  UAHOWP      WndProcArray;
   WNDPROC_OWP PreDefDlgProc;
   WNDPROC_OWP PostDefDlgProc;
-  UAHOWP  DlgProcArray;
-  FARPROC GetSystemMetrics;
-  FARPROC SystemParametersInfoA;
-  FARPROC SystemParametersInfoW;
-  FARPROC ForceResetUserApiHook;
-  FARPROC DrawFrameControl;
-  FARPROC DrawCaption;
-  FARPROC MDIRedrawFrame;
-  FARPROC GetRealWindowOwner;
+  UAHOWP      DlgProcArray;
+  FARPROC     GetSystemMetrics;
+  FARPROC     SystemParametersInfoA;
+  FARPROC     SystemParametersInfoW;
+  FARPROC     ForceResetUserApiHook;
+  FARPROC     DrawFrameControl;
+  FARPROC     DrawCaption;
+  FARPROC     MDIRedrawFrame;
+  FARPROC     GetRealWindowOwner;
 } USERAPIHOOK, *PUSERAPIHOOK;
 
+typedef enum _UAPIHK
+{
+  uahLoadInit,
+  uahStop,
+  uahShutdown
+} UAPIHK, *PUAPIHK;
+
+typedef BOOL(CALLBACK *USERAPIHOOKPROC)(UAPIHK State, PUSERAPIHOOK puah);
+
+typedef struct _USERAPIHOOKINFO
+{
+  DWORD m_size;
+  LPCWSTR m_dllname1;
+  LPCWSTR m_funname1;
+  LPCWSTR m_dllname2;
+  LPCWSTR m_funname2;
+} USERAPIHOOKINFO,*PUSERAPIHOOKINFO;
+
+#if (WINVER == _WIN32_WINNT_WINXP)
+BOOL WINAPI RegisterUserApiHook(HINSTANCE hInstance, USERAPIHOOKPROC CallbackFunc);
+#elif (WINVER == _WIN32_WINNT_WS03)
 BOOL WINAPI RegisterUserApiHook(PUSERAPIHOOKINFO puah);
+#endif
+
 BOOL WINAPI UnregisterUserApiHook(VOID);
 
 #endif
diff --git a/reactos/include/reactos/uxundoc.h b/reactos/include/reactos/uxundoc.h
new file mode 100644 (file)
index 0000000..930e4d0
--- /dev/null
@@ -0,0 +1,74 @@
+#pragma once
+
+typedef HANDLE HTHEMEFILE;
+
+/**********************************************************************
+ *              ENUMTHEMEPROC
+ *
+ * Callback function for EnumThemes.
+ *
+ * RETURNS
+ *     TRUE to continue enumeration, FALSE to stop
+ *
+ * PARAMS
+ *     lpReserved          Always 0
+ *     pszThemeFileName    Full path to theme msstyles file
+ *     pszThemeName        Display name for theme
+ *     pszToolTip          Tooltip name for theme
+ *     lpReserved2         Always 0
+ *     lpData              Value passed through lpData from EnumThemes
+ */
+typedef BOOL (CALLBACK *ENUMTHEMEPROC)(LPVOID lpReserved, LPCWSTR pszThemeFileName,
+                                       LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2,
+                                       LPVOID lpData);
+
+/**********************************************************************
+ *              PARSETHEMEINIFILEPROC
+ *
+ * Callback function for ParseThemeIniFile.
+ *
+ * RETURNS
+ *     TRUE to continue enumeration, FALSE to stop
+ *
+ * PARAMS
+ *     dwType              Entry type
+ *     pszParam1           Use defined by entry type
+ *     pszParam2           Use defined by entry type
+ *     pszParam3           Use defined by entry type
+ *     dwParam             Use defined by entry type
+ *     lpData              Value passed through lpData from ParseThemeIniFile
+ *
+ * NOTES
+ * I don't know what the valid entry types are
+ */
+typedef BOOL (CALLBACK* PARSETHEMEINIFILEPROC)(DWORD dwType, LPWSTR pszParam1,
+                                               LPWSTR pszParam2, LPWSTR pszParam3,
+                                               DWORD dwParam, LPVOID lpData);
+
+/* Structure filled in by EnumThemeColors() and EnumeThemeSizes() with the
+ * various strings for a theme color or size. */
+typedef struct tagTHEMENAMES
+{
+    WCHAR szName[MAX_PATH+1];
+    WCHAR szDisplayName[MAX_PATH+1];
+    WCHAR szTooltip[MAX_PATH+1];
+} THEMENAMES, *PTHEMENAMES;
+
+/* Declarations for undocumented functions for use internally */
+DWORD WINAPI QueryThemeServices(void);
+HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName,
+                             LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile,
+                             DWORD unknown);
+HRESULT WINAPI CloseThemeFile(HTHEMEFILE hThemeFile);
+HRESULT WINAPI ApplyTheme(HTHEMEFILE hThemeFile, char *unknown, HWND hWnd);
+HRESULT WINAPI GetThemeDefaults(LPCWSTR pszThemeFileName, LPWSTR pszColorName,
+                                DWORD dwColorNameLen, LPWSTR pszSizeName,
+                                DWORD dwSizeNameLen);
+HRESULT WINAPI EnumThemes(LPCWSTR pszThemePath, ENUMTHEMEPROC callback,
+                          LPVOID lpData);
+HRESULT WINAPI EnumThemeColors(LPWSTR pszThemeFileName, LPWSTR pszSizeName,
+                               DWORD dwColorNum, PTHEMENAMES pszColorNames);
+HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName,
+                              DWORD dwSizeNum, PTHEMENAMES pszColorNames);
+HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
+                                 PARSETHEMEINIFILEPROC callback, LPVOID lpData);
index 7679238..5e1cd08 100644 (file)
@@ -9,7 +9,8 @@
 #define USER32_CALLBACK_EVENTPROC             (5)
 #define USER32_CALLBACK_LOADMENU              (6)
 #define USER32_CALLBACK_CLIENTTHREADSTARTUP   (7)
-#define USER32_CALLBACK_MAXIMUM               (7)
+#define USER32_CALLBACK_CLIENTLOADLIBRARY     (8)
+#define USER32_CALLBACK_MAXIMUM               (8)
 
 typedef struct _WINDOWPROC_CALLBACK_ARGUMENTS
 {
@@ -76,6 +77,14 @@ typedef struct _LOADMENU_CALLBACK_ARGUMENTS
   WCHAR MenuName[1];
 } LOADMENU_CALLBACK_ARGUMENTS, *PLOADMENU_CALLBACK_ARGUMENTS;
 
+typedef struct _CLIENT_LOAD_LIBRARY_ARGUMENTS
+{
+    UNICODE_STRING strLibraryName;
+    UNICODE_STRING strInitFuncName;
+    BOOL Unload;
+    BOOL ApiHook;
+} CLIENT_LOAD_LIBRARY_ARGUMENTS, *PCLIENT_LOAD_LIBRARY_ARGUMENTS;
+
 NTSTATUS WINAPI
 User32CallWindowProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
 NTSTATUS WINAPI
@@ -92,5 +101,6 @@ NTSTATUS WINAPI
 User32CallLoadMenuFromKernel(PVOID Arguments, ULONG ArgumentLength);
 NTSTATUS WINAPI
 User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength);
-
+NTSTATUS WINAPI
+User32CallClientLoadLibraryFromKernel(PVOID Arguments, ULONG ArgumentLength);
 #endif /* __INCLUDE_USER32_CALLBACK_H */