1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL - See COPYING in the top level directory 4 * PURPOSE: Test for NtUserCallOneParam 5 * PROGRAMMERS: 6 */ 7 8 #include <win32nt.h> 9 10 11 12 void 13 Test_OneParamRoutine_BeginDeferWindowPos(void) /* 0x1e */ 14 { 15 HDWP hWinPosInfo; 16 17 hWinPosInfo = (HDWP)NtUserCallOneParam(5, 0x1e); 18 TEST(hWinPosInfo != 0); 19 TEST(EndDeferWindowPos(hWinPosInfo) != 0); 20 21 } 22 23 void 24 Test_OneParamRoutine_WindowFromDC(void) /* 0x1f */ 25 { 26 HDC hDC = GetDC(NULL); 27 HWND hWnd; 28 29 hWnd = (HWND)NtUserCallOneParam((DWORD)hDC, 0x1f); 30 TEST(hWnd != 0); 31 TEST(IsWindow(hWnd)); 32 TEST(hWnd == GetDesktopWindow()); 33 34 } 35 36 void 37 Test_OneParamRoutine_CreateEmptyCurObject(void) /* XP/2k3 : 0x21, vista 0x25 */ 38 { 39 HICON hIcon ; 40 41 /* Test 0 */ 42 hIcon = (HICON) NtUserCallOneParam(0, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT); 43 TEST(hIcon != NULL); 44 45 TEST(NtUserDestroyCursor(hIcon, 0) == TRUE); 46 47 /* Test Garbage */ 48 hIcon = (HICON) NtUserCallOneParam(0xdeadbeef, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT); 49 TEST(hIcon != NULL); 50 51 TEST(NtUserDestroyCursor(hIcon, 0xbaadf00d) == TRUE); 52 53 } 54 55 void 56 Test_OneParamRoutine_MapDesktopObject(void) /* 0x30 */ 57 { 58 DWORD pObject; 59 HWND hWnd; 60 HMENU hMenu; 61 62 hWnd = GetDesktopWindow(); 63 pObject = NtUserCallOneParam((DWORD)hWnd, _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT); 64 TEST(pObject > 0); 65 TEST(pObject < 0x80000000); 66 67 hMenu = CreateMenu(); 68 pObject = NtUserCallOneParam((DWORD)hMenu, _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT); 69 DestroyMenu(hMenu); 70 TEST(pObject > 0); 71 TEST(pObject < 0x80000000); 72 73 } 74 75 void 76 Test_OneParamRoutine_SwapMouseButtons(void) /* 0x42 */ 77 { 78 BOOL bInverse; 79 80 NtUserCallOneParam(TRUE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON); 81 bInverse = (BOOL)NtUserCallOneParam(FALSE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON); 82 TEST(bInverse == TRUE); 83 bInverse = (BOOL)NtUserCallOneParam(FALSE, _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON); 84 TEST(bInverse == FALSE); 85 86 // TODO: test other values 87 } 88 89 START_TEST(NtUserCallOneParam) 90 { 91 Test_OneParamRoutine_BeginDeferWindowPos(); /* 0x1e */ 92 Test_OneParamRoutine_WindowFromDC(); /* 0x1f */ 93 Test_OneParamRoutine_CreateEmptyCurObject(); /* XP/2k3 : 0x21, vista 0x25 */ 94 Test_OneParamRoutine_MapDesktopObject(); /* 0x30 */ 95 Test_OneParamRoutine_SwapMouseButtons(); /* 0x42 */ 96 } 97