ReactOS  0.4.15-dev-1177-g6cb3b62
GetMessageTime.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS api tests
3  * LICENSE: GPL - See COPYING in the top level directory
4  * PURPOSE: Test for GetMessageTime and GetTickCount
5  * PROGRAMMERS: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6  */
7 #include "precomp.h"
8 
9 #define TIMER_ID 999
10 #define TIMER_INTERVAL 500 /* 500 milliseconds */
11 
12 #define MOUSE_LOCATION_X(x) ((DWORD)(x) * 0xFFFF / GetSystemMetrics(SM_CXSCREEN))
13 #define MOUSE_LOCATION_Y(y) ((DWORD)(y) * 0xFFFF / GetSystemMetrics(SM_CYSCREEN))
14 
15 #define WIN_X 50
16 #define WIN_Y 50
17 #define WIN_CX 100
18 #define WIN_CY 100
19 
20 static INT s_nCount = 0;
21 static LONG s_nMsgTime = 0;
22 
23 static LRESULT CALLBACK
25 {
26  static BOOL s_bReach_WM_MOUSEMOVE;
27  static BOOL s_bReach_WM_LBUTTONDOWN;
28  static BOOL s_bReach_WM_LBUTTONUP;
29  switch (uMsg)
30  {
31  case WM_CREATE:
32  s_nCount = 0;
35  s_bReach_WM_MOUSEMOVE = FALSE;
36  s_bReach_WM_LBUTTONDOWN = FALSE;
37  s_bReach_WM_LBUTTONUP = FALSE;
38  break;
39  case WM_TIMER:
40  if (s_nCount == 5)
41  {
44  break;
45  }
46  if (s_nCount != 0)
47  {
49  "GetMessageTime() is wrong, compared to previous one\n");
51  "GetMessageTime() is wrong, compared to GetTickCount()\n");
52  }
54  ok(s_nMsgTime != 0, "message time was zero.\n");
55  s_nCount++;
56  if (s_nCount == 5)
57  {
61  0, 0);
62  mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0);
63  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
64  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
65  }
66  break;
67  case WM_MOUSEMOVE:
68  trace("WM_MOUSEMOVE\n");
69  ok_int(s_nCount, 5);
71  "GetMessageTime() is wrong, compared to previous one\n");
73  "GetMessageTime() is wrong, compared to GetTickCount()\n");
74  s_bReach_WM_MOUSEMOVE = TRUE;
75  break;
76  case WM_LBUTTONDOWN:
77  trace("WM_LBUTTONDOWN\n");
78  ok_int(s_nCount, 5);
80  "GetMessageTime() is wrong, compared to previous one\n");
82  "GetMessageTime() is wrong, compared to GetTickCount()\n");
83  s_bReach_WM_LBUTTONDOWN = TRUE;
84  break;
85  case WM_LBUTTONUP:
86  trace("WM_LBUTTONUP\n");
87  ok_int(s_nCount, 5);
89  "GetMessageTime() is wrong, compared to previous one\n");
91  "GetMessageTime() is wrong, compared to GetTickCount()\n");
92  s_bReach_WM_LBUTTONUP = TRUE;
93  break;
94  case WM_DESTROY:
95  ok_int(s_bReach_WM_MOUSEMOVE, TRUE);
96  ok_int(s_bReach_WM_LBUTTONDOWN, TRUE);
97  ok_int(s_bReach_WM_LBUTTONUP, TRUE);
98  PostQuitMessage(0);
99  break;
100  default:
101  return DefWindowProcW(hwnd, uMsg, wParam, lParam);
102  }
103  return 0;
104 }
105 
107 {
108  static const WCHAR s_szName[] = L"MessageTimeTestWindow";
109  WNDCLASSW wc;
110  ATOM atom;
111  HWND hwnd;
112  MSG msg;
113  BOOL bRet;
114 
117  0, 0);
118 
119  ZeroMemory(&wc, sizeof(wc));
120  wc.lpfnWndProc = WindowProc;
124  wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
125  wc.lpszClassName = s_szName;
126  atom = RegisterClassW(&wc);
127  ok(atom != 0, "RegisterClassW\n");
128 
133  ok(hwnd != NULL, "CreateWindowW\n");
134 
135  if (hwnd)
136  {
139 
140  while (GetMessageW(&msg, NULL, 0, 0))
141  {
144  }
145  }
146  else
147  {
148  skip("hwnd was NULL.\n");
149  }
150 
152  ok_int(bRet, 1);
153 
154  ok_int(s_nCount, 5);
155  ok(s_nMsgTime != 0, "message time was zero.\n");
156 }
#define MOUSEEVENTF_LEFTDOWN
Definition: winuser.h:1170
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define MOUSEEVENTF_ABSOLUTE
Definition: winuser.h:1180
#define WM_LBUTTONDOWN
Definition: winuser.h:1758
#define WIN_Y
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
WORD ATOM
Definition: dimm.idl:113
#define TRUE
Definition: types.h:120
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
#define CALLBACK
Definition: compat.h:35
BOOL WINAPI UpdateWindow(_In_ HWND)
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:455
#define ZeroMemory
Definition: winbase.h:1648
LONG WINAPI GetMessageTime(void)
Definition: message.c:1361
#define IDI_APPLICATION
Definition: winuser.h:699
UINT_PTR WPARAM
Definition: windef.h:207
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI DestroyWindow(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4291
int32_t INT
Definition: typedefs.h:58
WPARAM wParam
Definition: combotst.c:138
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
static INT s_nCount
#define COLOR_3DFACE
Definition: winuser.h:919
#define FALSE
Definition: types.h:117
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
WNDPROC lpfnWndProc
Definition: winuser.h:3152
#define WIN_X
void WINAPI mouse_event(_In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ ULONG_PTR)
START_TEST(GetMessageTime)
smooth NULL
Definition: ftsmooth.c:416
#define ok_int(expression, result)
Definition: atltest.h:134
LPCWSTR lpszClassName
Definition: winuser.h:3160
LONG_PTR LPARAM
Definition: windef.h:208
#define WIN_CY
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define WM_DESTROY
Definition: winuser.h:1591
#define MOUSE_LOCATION_X(x)
#define trace
Definition: atltest.h:70
#define TIMER_INTERVAL
#define MOUSE_LOCATION_Y(y)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define WM_TIMER
Definition: winuser.h:1724
unsigned long DWORD
Definition: ntddk_ex.h:95
HICON hIcon
Definition: winuser.h:3156
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
static const WCHAR L[]
Definition: oid.c:1250
#define MOUSEEVENTF_LEFTUP
Definition: winuser.h:1171
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define LoadCursor
Definition: winuser.h:5787
HCURSOR hCursor
Definition: winuser.h:3157
#define WIN_CX
#define SW_SHOWNORMAL
Definition: winuser.h:764
#define TIMER_ID
Definition: GetMessageTime.c:9
#define MOUSEEVENTF_MOVE
Definition: winuser.h:1169
HBRUSH hbrBackground
Definition: winuser.h:3158
#define ok(value,...)
Definition: atltest.h:57
#define WM_LBUTTONUP
Definition: winuser.h:1759
static WCHAR s_szName[MAX_PATH]
Definition: find.c:34
unsigned int UINT
Definition: ndis.h:50
#define WM_MOUSEMOVE
Definition: winuser.h:1757
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
HINSTANCE hInstance
Definition: winuser.h:3155
#define skip(...)
Definition: atltest.h:64
#define msg(x)
Definition: auth_time.c:54
#define IDC_ARROW
Definition: winuser.h:682
#define WM_CREATE
Definition: winuser.h:1590
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
static LONG s_nMsgTime
#define LoadIcon
Definition: winuser.h:5788
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)