ReactOS 0.4.16-dev-303-g11d5cb8
static.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include <windows.h>
#include "wine/test.h"
Include dependency graph for static.c:

Go to the source code of this file.

Macros

#define STRICT
 
#define WIN32_LEAN_AND_MEAN
 
#define TODO_COUNT   1
 
#define CTRL_ID   1995
 
#define expect_eq(expr, value, type, fmt)   { type val = expr; ok(val == (value), #expr " expected " fmt " got " fmt "\n", (value), val); }
 

Functions

static void flush_events (void)
 
static HWND build_static (DWORD style)
 
static LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
 
static void test_updates (int style, int flags)
 
static void test_set_text (void)
 
 START_TEST (static)
 

Variables

static HWND hMainWnd
 
static int g_nReceivedColorStatic = 0
 

Macro Definition Documentation

◆ CTRL_ID

#define CTRL_ID   1995

Definition at line 31 of file static.c.

◆ expect_eq

#define expect_eq (   expr,
  value,
  type,
  fmt 
)    { type val = expr; ok(val == (value), #expr " expected " fmt " got " fmt "\n", (value), val); }

Definition at line 35 of file static.c.

◆ STRICT

#define STRICT

Definition at line 23 of file static.c.

◆ TODO_COUNT

#define TODO_COUNT   1

Definition at line 29 of file static.c.

◆ WIN32_LEAN_AND_MEAN

#define WIN32_LEAN_AND_MEAN

Definition at line 24 of file static.c.

Function Documentation

◆ build_static()

static HWND build_static ( DWORD  style)
static

Definition at line 55 of file static.c.

56{
57 return CreateWindowA("static", "Test", WS_VISIBLE|WS_CHILD|style, 5, 5, 100, 100, hMainWnd, (HMENU)CTRL_ID, NULL, 0);
58}
Arabic default style
Definition: afstyles.h:94
#define NULL
Definition: types.h:112
static HWND hMainWnd
Definition: static.c:38
#define CTRL_ID
Definition: static.c:36
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4318

Referenced by test_set_text(), and test_updates().

◆ flush_events()

static void flush_events ( void  )
static

Definition at line 40 of file static.c.

41{
42 MSG msg;
43 int diff = 200;
44 int min_timeout = 100;
45 DWORD time = GetTickCount() + diff;
46
47 while (diff > 0)
48 {
49 if (MsgWaitForMultipleObjects( 0, NULL, FALSE, min_timeout, QS_ALLINPUT ) == WAIT_TIMEOUT) break;
50 while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
51 diff = time - GetTickCount();
52 }
53}
#define msg(x)
Definition: auth_time.c:54
#define WAIT_TIMEOUT
Definition: dderror.h:14
#define FALSE
Definition: types.h:117
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:455
unsigned long DWORD
Definition: ntddk_ex.h:95
__u16 time
Definition: mkdosfs.c:8
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define QS_ALLINPUT
Definition: winuser.h:906
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
#define PM_REMOVE
Definition: winuser.h:1199
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)

◆ START_TEST()

START_TEST ( static  )

Definition at line 133 of file static.c.

134{
135 static const char szClassName[] = "testclass";
136 WNDCLASSEXA wndclass;
137
138 wndclass.cbSize = sizeof(wndclass);
139 wndclass.style = CS_HREDRAW | CS_VREDRAW;
140 wndclass.lpfnWndProc = WndProc;
141 wndclass.cbClsExtra = 0;
142 wndclass.cbWndExtra = 0;
143 wndclass.hInstance = GetModuleHandleA(NULL);
148 wndclass.lpszClassName = szClassName;
149 wndclass.lpszMenuName = NULL;
150 RegisterClassExA(&wndclass);
151
154
155 test_updates(0, 0);
165
167}
static const WCHAR szClassName[]
Definition: clipbrd.c:11
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
#define TODO_COUNT
Definition: static.c:34
static void test_set_text(void)
Definition: static.c:123
static void test_updates(int style, int flags)
Definition: static.c:81
static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
Definition: static.c:62
#define SS_WHITERECT
Definition: pedump.c:698
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define SS_BLACKRECT
Definition: pedump.c:696
#define SS_SIMPLE
Definition: pedump.c:702
#define SS_BITMAP
Definition: pedump.c:704
#define SS_ICON
Definition: pedump.c:695
int cbClsExtra
Definition: winuser.h:3207
HINSTANCE hInstance
Definition: winuser.h:3209
HCURSOR hCursor
Definition: winuser.h:3211
LPCSTR lpszMenuName
Definition: winuser.h:3213
HICON hIconSm
Definition: winuser.h:3215
UINT style
Definition: winuser.h:3205
int cbWndExtra
Definition: winuser.h:3208
UINT cbSize
Definition: winuser.h:3204
WNDPROC lpfnWndProc
Definition: winuser.h:3206
LPCSTR lpszClassName
Definition: winuser.h:3214
HICON hIcon
Definition: winuser.h:3210
HBRUSH hbrBackground
Definition: winuser.h:3212
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define WHITE_BRUSH
Definition: wingdi.h:902
#define CS_VREDRAW
Definition: winuser.h:658
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define CS_HREDRAW
Definition: winuser.h:653
#define IDC_ARROW
Definition: winuser.h:687
#define SS_ETCHEDHORZ
Definition: winuser.h:343
#define SS_CENTERIMAGE
Definition: winuser.h:339
#define SS_ETCHEDVERT
Definition: winuser.h:344
#define IDI_APPLICATION
Definition: winuser.h:704
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
Definition: cursoricon.c:2112
#define SW_SHOW
Definition: winuser.h:778
BOOL WINAPI DestroyWindow(_In_ HWND)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
Definition: cursoricon.c:2142
const char * LPCSTR
Definition: xmlstorage.h:183

◆ test_set_text()

static void test_set_text ( void  )
static

Definition at line 118 of file static.c.

119{
120 HWND hStatic = build_static(SS_SIMPLE);
121 char buffA[10];
122
123 GetWindowTextA(hStatic, buffA, sizeof(buffA));
124 ok(!strcmp(buffA, "Test"), "got wrong text %s\n", buffA);
125
126 SetWindowTextA(hStatic, NULL);
127 GetWindowTextA(hStatic, buffA, sizeof(buffA));
128 ok(buffA[0] == 0, "got wrong text %s\n", buffA);
129
130 DestroyWindow(hStatic);
131}
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define ok(value,...)
Definition: atltest.h:57
static HWND build_static(DWORD style)
Definition: static.c:55
int WINAPI GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
Definition: window.c:1302
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)

◆ test_updates()

static void test_updates ( int  style,
int  flags 
)
static

Definition at line 79 of file static.c.

80{
81 RECT r1 = {20, 20, 30, 30};
82 HWND hStatic = build_static(style);
83 int exp;
84
86 trace("Testing style 0x%x\n", style);
88 /* during each update parent WndProc will test the WM_CTLCOLORSTATIC message */
93 InvalidateRect(hStatic, &r1, FALSE);
94 UpdateWindow(hStatic);
95 InvalidateRect(hStatic, NULL, FALSE);
96 UpdateWindow(hStatic);
97
98 if( (style & SS_TYPEMASK) == SS_BITMAP) {
99 HDC hdc = GetDC( hStatic);
100 COLORREF colour = GetPixel( hdc, 10, 10);
101 ok ( colour != 0, "pixel should NOT be painted black!\n");
102 ReleaseDC(hStatic, hdc);
103 }
105 exp = 4;
106 else
107 exp = 1; /* SS_ETCHED* seems to send WM_CTLCOLORSTATIC only sometimes */
108
109 if (flags & TODO_COUNT)
111 else if ((style & SS_TYPEMASK) == SS_ICON || (style & SS_TYPEMASK) == SS_BITMAP)
112 ok( g_nReceivedColorStatic == exp, "expected %u got %u\n", exp, g_nReceivedColorStatic );
113 else
115 DestroyWindow(hStatic);
116}
#define trace
Definition: atltest.h:70
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
Definition: blt.cpp:2
GLbitfield flags
Definition: glext.h:7161
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
static int g_nReceivedColorStatic
Definition: static.c:39
static void flush_events(void)
Definition: static.c:42
static DNS_RECORDW r1
Definition: record.c:37
#define todo_wine
Definition: custom.c:89
DWORD exp
Definition: msg.c:16058
#define expect_eq(expr, value, type, fmt)
Definition: static.c:35
DWORD COLORREF
Definition: windef.h:300
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define SS_TYPEMASK
Definition: winuser.h:362
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)

◆ WndProc()

static LRESULT CALLBACK WndProc ( HWND  hwnd,
UINT  msg,
WPARAM  wparam,
LPARAM  lparam 
)
static

Definition at line 60 of file static.c.

61{
62 switch (msg)
63 {
65 {
66 HDC hdc = (HDC)wparam;
67 HRGN hrgn = CreateRectRgn(0, 0, 1, 1);
68 ok(GetClipRgn(hdc, hrgn) == 1, "Static controls during a WM_CTLCOLORSTATIC must have a clipping region\n");
72 }
73 break;
74 }
75
77}
static HRGN hrgn
@ lparam
Definition: SystemMenu.c:31
@ wparam
Definition: SystemMenu.c:30
pKey DeleteObject()
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LRESULT
Definition: windef.h:209
HRGN WINAPI CreateRectRgn(_In_ int, _In_ int, _In_ int, _In_ int)
int WINAPI GetClipRgn(_In_ HDC, _In_ HRGN)
#define BLACK_BRUSH
Definition: wingdi.h:896
#define WM_CTLCOLORSTATIC
Definition: winuser.h:1775
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Variable Documentation

◆ g_nReceivedColorStatic

int g_nReceivedColorStatic = 0
static

Definition at line 37 of file static.c.

◆ hMainWnd

HWND hMainWnd
static

Definition at line 33 of file static.c.