ReactOS 0.4.15-dev-5895-g2687c1b
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
20static INT s_nCount = 0;
21static LONG s_nMsgTime = 0;
22
23static 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);
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);
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));
124 wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
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 WIN_Y
#define TIMER_INTERVAL
static INT s_nCount
#define WIN_CX
static LONG s_nMsgTime
#define MOUSE_LOCATION_Y(y)
#define WIN_X
#define WIN_CY
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define MOUSE_LOCATION_X(x)
#define TIMER_ID
Definition: GetMessageTime.c:9
#define trace
Definition: atltest.h:70
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
#define ok_int(expression, result)
Definition: atltest.h:134
#define msg(x)
Definition: auth_time.c:54
static WCHAR s_szName[MAX_PATH]
Definition: find.c:34
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
WORD ATOM
Definition: dimm.idl:113
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CALLBACK
Definition: compat.h:35
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:455
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned int UINT
Definition: ndis.h:50
#define L(x)
Definition: ntvdm.h:50
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
long LONG
Definition: pedump.c:60
LPCWSTR lpszClassName
Definition: winuser.h:3175
HBRUSH hbrBackground
Definition: winuser.h:3173
HICON hIcon
Definition: winuser.h:3171
HINSTANCE hInstance
Definition: winuser.h:3170
WNDPROC lpfnWndProc
Definition: winuser.h:3167
HCURSOR hCursor
Definition: winuser.h:3172
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT
Definition: typedefs.h:58
#define ZeroMemory
Definition: winbase.h:1670
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define SW_SHOWNORMAL
Definition: winuser.h:764
#define MOUSEEVENTF_ABSOLUTE
Definition: winuser.h:1184
void WINAPI mouse_event(_In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_ ULONG_PTR)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define MOUSEEVENTF_LEFTUP
Definition: winuser.h:1175
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define WM_CREATE
Definition: winuser.h:1598
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
#define IDC_ARROW
Definition: winuser.h:682
#define WM_MOUSEMOVE
Definition: winuser.h:1765
#define WM_LBUTTONDOWN
Definition: winuser.h:1766
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define IDI_APPLICATION
Definition: winuser.h:699
#define MOUSEEVENTF_MOVE
Definition: winuser.h:1173
#define MOUSEEVENTF_LEFTDOWN
Definition: winuser.h:1174
#define WM_TIMER
Definition: winuser.h:1732
#define LoadIcon
Definition: winuser.h:5803
BOOL WINAPI UpdateWindow(_In_ HWND)
#define LoadCursor
Definition: winuser.h:5802
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4306
#define WM_LBUTTONUP
Definition: winuser.h:1767
LONG WINAPI GetMessageTime(void)
Definition: message.c:1361
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define WM_DESTROY
Definition: winuser.h:1599
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI DestroyWindow(_In_ HWND)
#define COLOR_3DFACE
Definition: winuser.h:923
__wchar_t WCHAR
Definition: xmlstorage.h:180