- Started NtUserRegisterClassExWOW and now using the fnIDs. Nothing is used but the...
authorJames Tabor <james.tabor@reactos.org>
Sun, 13 Jul 2008 00:21:51 +0000 (00:21 +0000)
committerJames Tabor <james.tabor@reactos.org>
Sun, 13 Jul 2008 00:21:51 +0000 (00:21 +0000)
- Implemented NtUserMessageCall, moved our first victim over to use it. This is for bug 2451.

svn path=/trunk/; revision=34442

reactos/dll/win32/user32/controls/regcontrol.c
reactos/dll/win32/user32/windows/class.c
reactos/dll/win32/user32/windows/defwnd.c
reactos/include/reactos/win32k/ntuser.h
reactos/subsystems/win32/win32k/include/winpos.h
reactos/subsystems/win32/win32k/w32ksvc.db

index caf5ffa..63fd47a 100644 (file)
@@ -19,21 +19,21 @@ static const struct
     UINT ClsId;
 } g_SysClasses[] =
 {
-    { &DIALOG_builtin_class,    CLASS_DIALOG },
-    { &POPUPMENU_builtin_class, CLASS_POPUPMENU },
-    { &COMBO_builtin_class,     CLASS_COMBO },
-    { &COMBOLBOX_builtin_class, CLASS_COMBOLBOX },
-    { &DESKTOP_builtin_class,   CLASS_DESKTOP },
-    { &MDICLIENT_builtin_class, CLASS_MDICLIENT },
+    { &DIALOG_builtin_class,    FNID_DIALOG },
+    { &POPUPMENU_builtin_class, FNID_MENU },
+    { &COMBO_builtin_class,     FNID_COMBOBOX },
+    { &COMBOLBOX_builtin_class, FNID_COMBOLBOX },
+    { &DESKTOP_builtin_class,   FNID_DESKTOP },
+    { &MDICLIENT_builtin_class, FNID_MDICLIENT },
 #if 0
-    { &MENU_builtin_class,      CLASS_MENU },
+    { &MENU_builtin_class,      FNID_MENU },
 #endif
-    { &SCROLL_builtin_class,    CLASS_SCROLL },
-    { &BUTTON_builtin_class,    CLASS_BUTTON },
-    { &LISTBOX_builtin_class,   CLASS_LISTBOX },
-    { &EDIT_builtin_class,      CLASS_EDIT },
-    { &ICONTITLE_builtin_class, CLASS_ICONTITLE },
-    { &STATIC_builtin_class,    CLASS_STATIC },
+    { &SCROLL_builtin_class,    FNID_SCROLLBAR },
+    { &BUTTON_builtin_class,    FNID_BUTTON },
+    { &LISTBOX_builtin_class,   FNID_LISTBOX },
+    { &EDIT_builtin_class,      FNID_EDIT },
+    { &ICONTITLE_builtin_class, FNID_ICONTITLE },
+    { &STATIC_builtin_class,    FNID_STATIC },
 };
 
 BOOL WINAPI RegisterSystemControls(VOID)
index f3b9004..c43eb4b 100644 (file)
@@ -1,5 +1,4 @@
-/* $Id$
- *
+/*
  * PROJECT:         ReactOS user32.dll
  * COPYRIGHT:       GPL - See COPYING in the top level directory
  * FILE:            dll/win32/user32/windows/class.c
@@ -816,6 +815,17 @@ cleanup:
    return SmallIcon;
 }
 
+
+ATOM STDCALL
+RegisterClassExWOWW(WNDCLASSEXW *lpwcx,
+                    LPDWORD pdwWowData,
+                    WORD fnID,
+                    DWORD dwFlags)
+{
+  RTL_ATOM Atom = 0;
+  return (ATOM)Atom;
+}
+
 /*
  * @implemented
  */
index 648d67d..327046c 100644 (file)
@@ -1410,21 +1410,7 @@ User32DefWindowProc(HWND hWnd,
 
         case WM_SHOWWINDOW:
         {
-            LONG Style;
-            INT Ret = 0;
-
-            if (!lParam) return 0;
-            Style = GetWindowLongW(hWnd, GWL_STYLE);
-            if ((Style & WS_VISIBLE) && wParam) return 0;
-            if (!(Style & WS_VISIBLE) && !wParam) return 0;
-            if (!GetWindow(hWnd, GW_OWNER)) return 0;
-            Ret = NtUserCallTwoParam((DWORD) hWnd, (DWORD) wParam, TWOPARAM_ROUTINE_ROS_SHOWWINDOW);
-            if(Ret)
-            {
-                if( Ret == -1) return 0;
-                return Ret;
-            }
-            ShowWindow(hWnd, wParam ? SW_SHOWNOACTIVATE : SW_HIDE);
+            NtUserMessageCall( hWnd, Msg, wParam, lParam, 0, NUMC_DEFWINDOWPROC, FALSE);
             break;
         }
 
index 17216e0..5ba31e6 100644 (file)
@@ -22,6 +22,13 @@ typedef struct _REGISTER_SYSCLASS
     UINT ClassId;
 } REGISTER_SYSCLASS, *PREGISTER_SYSCLASS;
 
+typedef struct _CLSMENUNAME
+{
+  LPSTR     pszClientAnsiMenuName;
+  LPWSTR    pwszClientUnicodeMenuName;
+  PUNICODE_STRING pusMenuName;
+} CLSMENUNAME, *PCLSMENUNAME;
+
 typedef struct _USER_OBJHDR
 {
     /* This is the common header for all user handle objects */
@@ -78,7 +85,7 @@ typedef struct _WINDOWCLASS
     INT ClsExtra;
     INT WndExtra;
     PVOID Dce;
-    DWORD fnID;
+    DWORD fnID; // New ClassId
     HINSTANCE hInstance;
     HANDLE hIcon; /* FIXME - Use pointer! */
     HANDLE hIconSm; /* FIXME - Use pointer! */
@@ -93,23 +100,7 @@ typedef struct _WINDOWCLASS
     UINT System : 1;
     UINT Global : 1;
     UINT MenuNameIsString : 1;
-
-#define CLASS_DEFAULT    0x0
-#define CLASS_DESKTOP    0x1
-#define CLASS_DIALOG     0x2
-#define CLASS_POPUPMENU  0x3
-#define CLASS_COMBO      0x4
-#define CLASS_COMBOLBOX  0x5
-#define CLASS_MDICLIENT  0x6
-#define CLASS_MENU       0x7
-#define CLASS_SCROLL     0x8
-#define CLASS_BUTTON     0x9
-#define CLASS_LISTBOX    0xA
-#define CLASS_EDIT       0xB
-#define CLASS_ICONTITLE  0xC
-#define CLASS_STATIC     0xD
-    UINT ClassId : 4;
-
+    UINT NotUsed : 27;
 } WINDOWCLASS, *PWINDOWCLASS;
 
 typedef struct _WINDOW
@@ -1734,7 +1725,8 @@ NtUserMapVirtualKeyEx( UINT keyCode,
                       UINT transType,
                       DWORD keyboardId,
                       HKL dwhkl );
-
+// Look like fnID's
+#define NUMC_DEFWINDOWPROC          0x029E
 #define NUMC_SENDMESSAGE            0x02B0
 // Kernel has option to use TO or normal msg send, based on type of msg.
 #define NUMC_SENDMESSAGEWTOOPTION   0x02B1
@@ -1963,16 +1955,16 @@ NtUserRedrawWindow
  UINT flags
 );
 
-HWINSTA
+RTL_ATOM
 NTAPI
 NtUserRegisterClassExWOW(
-    CONST WNDCLASSEXW* lpwcx,
-    BOOL bUnicodeClass,
-    WNDPROC wpExtra,
-    DWORD dwUnknown4,
+    WNDCLASSEXW* lpwcx,
+    PUNICODE_STRING pustrClassName,
+    PUNICODE_STRING pustrCNVersion,
+    PCLSMENUNAME pClassMenuName,
     DWORD fnID,
-    DWORD dwUnknown6,
-    DWORD dwUnknown7);
+    DWORD Flags,
+    LPDWORD pWow);
 
 BOOL
 NTAPI
@@ -2490,7 +2482,7 @@ NTAPI
 NtUserUnregisterClass(
   PUNICODE_STRING ClassNameOrAtom,
   HINSTANCE hInstance,
-  DWORD Unknown);
+  PCLSMENUNAME pClassMenuName);
 
 BOOL
 NTAPI
@@ -2668,7 +2660,6 @@ typedef struct tagKMDDELPARAM
 #define TWOPARAM_ROUTINE_GETSYSCOLORBRUSHES 0xfffd0063
 #define TWOPARAM_ROUTINE_GETSYSCOLORPENS    0xfffd0064
 #define TWOPARAM_ROUTINE_GETSYSCOLORS       0xfffd0065
-#define TWOPARAM_ROUTINE_ROS_SHOWWINDOW     0x1000
 #define TWOPARAM_ROUTINE_ROS_ISACTIVEICON   0x1001
 #define TWOPARAM_ROUTINE_ROS_NCDESTROY      0x1002
 #define TWOPARAM_ROUTINE_ROS_REGSYSCLASSES  0x1003
index 5791544..d39e226 100644 (file)
@@ -5,6 +5,8 @@
 #define SWP_NOCLIENTMOVE          0x0800
 #define SWP_NOCLIENTSIZE          0x1000
 
+#define WIN_NEEDS_SHOW_OWNEDPOPUP (0x00000140)
+
 #define IntPtInWindow(WndObject,x,y) \
   ((x) >= (WndObject)->Wnd->WindowRect.left && \
    (x) < (WndObject)->Wnd->WindowRect.right && \
index e736546..bedb28e 100644 (file)
@@ -697,8 +697,8 @@ NtUserMenuInfo                          3
 NtUserMenuItemInfo                      5
 NtUserMonitorFromPoint                  3
 NtUserMonitorFromRect                   2
-NtUserMonitorFromWindow                 2
 NtUserRegisterClassEx                   6
+NtUserMonitorFromWindow                 2
 NtUserSendMessage                       5
 NtUserSendMessageTimeout                8
 NtUserSendNotifyMessage                 4