[WIN32K]
[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 <stdio.h>
9 #include <wine/test.h>
10 #include <windows.h>
11
12 void Test_ScrollDC()
13 {
14 HWND hWnd, hWnd2;
15 HDC hDC;
16 HRGN hrgn;
17 RECT rcClip;
18 int iResult;
19
20 /* Create a window */
21 hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
22 100, 100, 100, 100,
23 NULL, NULL, 0, 0);
24 UpdateWindow(hWnd);
25 hDC = GetDC(hWnd);
26
27 /* Test that no update region is there */
28 hrgn = CreateRectRgn(0,0,0,0);
29 iResult = GetUpdateRgn(hWnd, hrgn, FALSE);
30 ok (iResult == NULLREGION, "\n");
31
32 /* Test normal scrolling */
33 ok(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE, "\n");
34
35 /* Scroll with invalid update region */
36 DeleteObject(hrgn);
37 ok(ScrollDC(hDC, 50, 0, NULL, NULL, hrgn, NULL) == FALSE, "\n");
38 hrgn = CreateRectRgn(0,0,0,0);
39 ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
40
41 /* Scroll with invalid update rect pointer */
42 ok(ScrollDC(hDC, 50, 0, NULL, NULL, NULL, (PRECT)1) == 0, "\n");
43 ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
44
45 /* Scroll with a clip rect */
46 rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
47 ok(ScrollDC(hDC, 50, 0, NULL, &rcClip, hrgn, NULL) == TRUE, "\n");
48 ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
49
50 /* Scroll with a clip rect */
51 rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
52 ok(ScrollDC(hDC, 50, 50, NULL, &rcClip, hrgn, NULL) == TRUE, "\n");
53 ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
54
55 /* Overlap with another window */
56 hWnd2 = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
57 30, 160, 100, 100,
58 NULL, NULL, 0, 0);
59 UpdateWindow(hWnd2);
60
61 /* Cleanup */
62 ReleaseDC(hWnd, hDC);
63 DestroyWindow(hWnd);
64 DestroyWindow(hWnd2);
65
66 }
67
68 START_TEST(ScrollDC)
69 {
70 Test_ScrollDC();
71 }
72