[KMTESTS:MM]
[reactos.git] / rostests / apitests / user32 / ScrollDC.c
1 /*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for ScrollDC
5 * PROGRAMMERS: Timo Kreuzer
6 */
7
8 #include <apitest.h>
9
10 #include <wingdi.h>
11 #include <winuser.h>
12
13 void Test_ScrollDC()
14 {
15 HWND hWnd, hWnd2;
16 HDC hDC;
17 HRGN hrgn;
18 RECT rcClip;
19 int iResult;
20
21 /* Create a window */
22 hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
23 100, 100, 100, 100,
24 NULL, NULL, 0, 0);
25 UpdateWindow(hWnd);
26 hDC = GetDC(hWnd);
27
28 /* Test that no update region is there */
29 hrgn = CreateRectRgn(0,0,0,0);
30 iResult = GetUpdateRgn(hWnd, hrgn, FALSE);
31 ok (iResult == NULLREGION, "Expected NULLREGION, got %d\n", iResult);
32
33 /* Test normal scrolling */
34 ok(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE, "ScrollDC failed\n");
35
36 /* Scroll with invalid update region */
37 DeleteObject(hrgn);
38 ok(ScrollDC(hDC, 50, 0, NULL, NULL, (HRGN)0x12345678, NULL) == FALSE, "ScrollDC successed\n");
39 ok(ScrollDC(hDC, 50, 0, NULL, NULL, hrgn, NULL) == FALSE, "ScrollDC successed\n");
40 hrgn = CreateRectRgn(0,0,0,0);
41 iResult = GetUpdateRgn(hWnd, hrgn, FALSE);
42 ok(iResult == NULLREGION, "Expected NULLREGION, got %d\n", iResult);
43
44 /* Scroll with invalid update rect pointer */
45 ok(ScrollDC(hDC, 50, 0, NULL, NULL, NULL, (PRECT)1) == FALSE, "ScrollDC failed\n");
46 iResult = GetUpdateRgn(hWnd, hrgn, FALSE);
47 ok(iResult == NULLREGION, "Expected NULLREGION, got %d\n", iResult);
48
49 /* Scroll with a clip rect */
50 rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
51 ok(ScrollDC(hDC, 50, 0, NULL, &rcClip, hrgn, NULL) == TRUE, "ScrollDC failed\n");
52 iResult = GetUpdateRgn(hWnd, hrgn, FALSE);
53 ok(iResult == NULLREGION, "Expected NULLREGION, got %d\n", iResult);
54
55 /* Scroll with a clip rect */
56 rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
57 ok(ScrollDC(hDC, 50, 50, NULL, &rcClip, hrgn, NULL) == TRUE, "ScrollDC failed\n");
58 iResult = GetUpdateRgn(hWnd, hrgn, FALSE);
59 ok(iResult == NULLREGION, "Expected NULLREGION, got %d\n", iResult);
60
61 /* Overlap with another window */
62 hWnd2 = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
63 30, 160, 100, 100,
64 NULL, NULL, 0, 0);
65 UpdateWindow(hWnd2);
66
67 /* Cleanup */
68 ReleaseDC(hWnd, hDC);
69 DestroyWindow(hWnd);
70 DestroyWindow(hWnd2);
71
72 }
73
74 START_TEST(ScrollDC)
75 {
76 Test_ScrollDC();
77 }
78