~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/user32/tests/scroll.c

Version: ~ [ wine-1.5.30 ] ~ [ wine-1.5.29 ] ~ [ wine-1.5.28 ] ~ [ wine-1.5.27 ] ~ [ wine-1.5.26 ] ~ [ wine-1.5.25 ] ~ [ wine-1.5.24 ] ~ [ wine-1.5.23 ] ~ [ wine-1.5.22 ] ~ [ wine-1.5.21 ] ~ [ wine-1.5.20 ] ~ [ wine-1.5.19 ] ~ [ wine-1.5.18 ] ~ [ wine-1.5.17 ] ~ [ wine-1.5.16 ] ~ [ wine-1.5.15 ] ~ [ wine-1.5.14 ] ~ [ wine-1.5.13 ] ~ [ wine-1.5.12 ] ~ [ wine-1.5.11 ] ~ [ wine-1.5.10 ] ~ [ wine-1.5.9 ] ~ [ wine-1.5.8 ] ~ [ wine-1.5.7 ] ~ [ wine-1.4.1 ] ~ [ wine-1.5.6 ] ~ [ wine-1.5.5 ] ~ [ wine-1.5.4 ] ~ [ wine-1.5.3 ] ~ [ wine-1.5.2 ] ~ [ wine-1.5.1 ] ~ [ wine-1.5.0 ] ~ [ wine-1.4 ] ~ [ wine-1.4-rc6 ] ~ [ wine-1.4-rc5 ] ~ [ wine-1.4-rc4 ] ~ [ wine-1.4-rc3 ] ~ [ wine-1.4-rc2 ] ~ [ wine-1.4-rc1 ] ~ [ wine-1.3.37 ] ~ [ wine-1.3.36 ] ~ [ wine-1.3.35 ] ~ [ wine-1.3.34 ] ~ [ wine-1.3.33 ] ~ [ wine-1.3.32 ] ~ [ wine-1.3.31 ] ~ [ wine-1.3.30 ] ~ [ wine-1.3.29 ] ~ [ wine-1.3.28 ] ~ [ wine-1.3.27 ] ~ [ wine-1.3.26 ] ~ [ wine-1.3.25 ] ~ [ wine-1.3.24 ] ~ [ wine-1.3.23 ] ~ [ wine-1.3.22 ] ~ [ wine-1.3.21 ] ~ [ wine-1.3.20 ] ~ [ wine-1.3.19 ] ~ [ wine-1.3.18 ] ~ [ wine-1.2.3 ] ~ [ wine-1.3.17 ] ~ [ wine-1.3.16 ] ~ [ wine-1.3.15 ] ~ [ wine-1.3.14 ] ~ [ wine-1.3.13 ] ~ [ wine-1.3.12 ] ~ [ wine-1.3.11 ] ~ [ wine-1.3.10 ] ~ [ wine-1.3.9 ] ~ [ wine-1.2.2 ] ~ [ wine-1.3.8 ] ~ [ wine-1.3.7 ] ~ [ wine-1.3.6 ] ~ [ wine-1.3.5 ] ~ [ wine-1.2.1 ] ~ [ wine-1.3.4 ] ~ [ wine-1.3.3 ] ~ [ wine-1.3.2 ] ~ [ wine-1.3.1 ] ~ [ wine-1.3.0 ] ~ [ wine-1.2 ] ~ [ wine-1.2-rc7 ] ~ [ wine-1.2-rc6 ] ~ [ wine-1.2-rc5 ] ~ [ wine-1.2-rc4 ] ~ [ wine-1.2-rc3 ] ~ [ wine-1.2-rc2 ] ~ [ wine-1.2-rc1 ] ~ [ wine-1.1.44 ] ~ [ wine-1.1.43 ] ~ [ wine-1.1.42 ] ~ [ wine-1.1.41 ] ~ [ wine-1.1.40 ] ~ [ wine-1.1.39 ] ~ [ wine-1.1.38 ] ~ [ wine-1.1.37 ] ~ [ wine-1.1.36 ] ~ [ wine-1.1.35 ] ~ [ wine-1.1.34 ] ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * Unit tests for scrollbar
  3  *
  4  * Copyright 2008 Lyutin Anatoly (Etersoft)
  5  *
  6  * This library is free software; you can redistribute it and/or
  7  * modify it under the terms of the GNU Lesser General Public
  8  * License as published by the Free Software Foundation; either
  9  * version 2.1 of the License, or (at your option) any later version.
 10  *
 11  * This library is distributed in the hope that it will be useful,
 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14  * Lesser General Public License for more details.
 15  *
 16  * You should have received a copy of the GNU Lesser General Public
 17  * License along with this library; if not, write to the Free Software
 18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 19  */
 20 
 21 #include <assert.h>
 22 #include <stdarg.h>
 23 #include <stdio.h>
 24 #include <windows.h>
 25 
 26 #include "wine/test.h"
 27 
 28 static HWND hScroll, hMainWnd;
 29 
 30 static LRESULT CALLBACK MyWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
 31 {
 32     switch(msg)
 33     {
 34 
 35     case WM_CREATE:
 36     {
 37         hScroll = CreateWindowA( "SCROLLBAR", "", WS_CHILD | WS_VISIBLE, 0, 0, 120, 100, hWnd, (HMENU)100, GetModuleHandleA(0), 0 );
 38 
 39         return 0;
 40     }
 41     case WM_DESTROY:
 42         PostQuitMessage(0);
 43         break;
 44 
 45     default:
 46         return DefWindowProcA(hWnd, msg, wParam, lParam);
 47     }
 48     return 0;
 49 }
 50 
 51 static void scrollbar_test1(void)
 52 {
 53     BOOL ret;
 54 
 55     ret = EnableScrollBar( hScroll, SB_CTL, ESB_DISABLE_BOTH );
 56     ok( ret, "The scrollbar should be disabled.\n" );
 57     todo_wine
 58     {
 59         ok( !IsWindowEnabled( hScroll ), "The scrollbar window should be disabled.\n" );
 60     }
 61 
 62     ret = EnableScrollBar( hScroll, SB_CTL, ESB_ENABLE_BOTH );
 63     ok( ret, "The scrollbar should be enabled.\n" );
 64     ok( IsWindowEnabled( hScroll ), "The scrollbar window should be enabled.\n" );
 65 
 66 }
 67 
 68 static void scrollbar_test2(void)
 69 {
 70     int ret;
 71 
 72     trace("The scrollbar is disabled.\n");
 73 
 74     EnableWindow( hScroll, FALSE );
 75     ok( !IsWindowEnabled( hScroll ), "The scroll should be disabled.\n" );
 76 
 77     ret = SetScrollPos( hScroll, SB_CTL, 30, TRUE);
 78     ok( !ret, "The position should not be set.\n" );
 79 
 80     ret = GetScrollPos( hScroll, SB_CTL);
 81     ok( !ret, "The position should be equal to zero\n");
 82 
 83     ret = SetScrollRange( hScroll, SB_CTL, 0, 100, TRUE );
 84     ok( ret, "The range should be set.\n" );
 85 
 86     ret = SetScrollPos( hScroll, SB_CTL, 30, TRUE);
 87     ok( !ret , "The position should not be set.\n" );
 88 
 89     ret = GetScrollPos( hScroll, SB_CTL);
 90     ok( ret == 30, "The position should be set!!!\n");
 91 
 92     trace("The scrollbar is enabled.\n");
 93 
 94     EnableWindow( hScroll, TRUE );
 95     ok( IsWindowEnabled( hScroll ), "The scroll should be enabled.\n" );
 96 
 97     ret = SetScrollPos( hScroll, SB_CTL, 30, TRUE);
 98     ok( ret == 30, "The position should be set.\n" );
 99 
100     ret = GetScrollPos( hScroll, SB_CTL);
101     ok( ret == 30, "The position should not be equal to zero\n");
102 
103     ret = SetScrollRange( hScroll, SB_CTL, 0, 100, TRUE );
104     ok( ret, "The range should be set.\n" );
105 
106     ret = SetScrollPos( hScroll, SB_CTL, 30, TRUE);
107     ok( ret == 30, "The position should be set.\n" );
108 
109     ret = GetScrollPos( hScroll, SB_CTL);
110     ok( ret == 30, "The position should not be equal to zero\n");
111 }
112 
113 static void scrollbar_test3(void)
114 {
115     BOOL    ret;
116 
117     ret = ShowScrollBar( hScroll, SB_CTL, FALSE );
118     ok( ret, "The ShowScrollBar() should not failed.\n" );
119     ok( !IsWindowVisible( hScroll ), "The scrollbar window should not be visible\n" );
120 
121     ret = ShowScrollBar( hScroll, SB_CTL, TRUE );
122     ok( ret, "The ShowScrollBar() should not failed.\n" );
123     ok( !IsWindowVisible( hScroll ), "The scrollbar window should be visible\n" );
124 
125     ret = ShowScrollBar( NULL, SB_CTL, TRUE );
126     ok( !ret, "The ShowScrollBar() should failed.\n" );
127 
128 }
129 
130 static void scrollbar_test4(void)
131 {
132     BOOL ret;
133     SCROLLBARINFO sbi;
134     RECT rect;
135     BOOL (WINAPI *pGetScrollBarInfo)(HWND, LONG, LPSCROLLBARINFO);
136 
137     pGetScrollBarInfo = (void*)GetProcAddress(GetModuleHandleA("user32.dll"), "GetScrollBarInfo");
138     if (!pGetScrollBarInfo)
139     {
140         win_skip("GetScrollBarInfo is not available\n");
141         return;
142     }
143 
144     /* Test GetScrollBarInfo to make sure it returns rcScrollBar in screen
145      * coordinates. */
146     sbi.cbSize = sizeof(sbi);
147     ret = pGetScrollBarInfo( hScroll, OBJID_CLIENT, &sbi);
148     ok( ret, "The GetScrollBarInfo() call should not fail.\n" );
149     GetWindowRect( hScroll, &rect );
150     ok( ret, "The GetWindowRect() call should not fail.\n" );
151     ok( !(sbi.rgstate[0] & (STATE_SYSTEM_INVISIBLE|STATE_SYSTEM_OFFSCREEN)),
152         "unexpected rgstate(0x%x)\n", sbi.rgstate[0]);
153     ok( EqualRect(&rect, &sbi.rcScrollBar),
154         "WindowRect(%d, %d, %d, %d) != rcScrollBar(%d, %d, %d, %d)\n",
155         rect.top, rect.left, rect.bottom, rect.right,
156         sbi.rcScrollBar.top, sbi.rcScrollBar.left,
157         sbi.rcScrollBar.bottom, sbi.rcScrollBar.right );
158 
159     /* Test windows horizontal and vertical scrollbar to make sure rcScrollBar
160      * is still returned in screen coordinates by moving the window, and
161      * making sure that it shifts the rcScrollBar value. */
162     ShowWindow( hMainWnd, SW_SHOW );
163     sbi.cbSize = sizeof(sbi);
164     ret = pGetScrollBarInfo( hMainWnd, OBJID_HSCROLL, &sbi);
165     ok( ret, "The GetScrollBarInfo() call should not fail.\n" );
166     GetWindowRect( hMainWnd, &rect );
167     ok( ret, "The GetWindowRect() call should not fail.\n" );
168     MoveWindow( hMainWnd, rect.left+5, rect.top+5,
169                 rect.right-rect.left, rect.bottom-rect.top, TRUE );
170     rect = sbi.rcScrollBar;
171     OffsetRect(&rect, 5, 5);
172     ret = pGetScrollBarInfo( hMainWnd, OBJID_HSCROLL, &sbi);
173     ok( ret, "The GetScrollBarInfo() call should not fail.\n" );
174     ok( EqualRect(&rect, &sbi.rcScrollBar),
175         "PreviousRect(%d, %d, %d, %d) != CurrentRect(%d, %d, %d, %d)\n",
176         rect.top, rect.left, rect.bottom, rect.right,
177         sbi.rcScrollBar.top, sbi.rcScrollBar.left,
178         sbi.rcScrollBar.bottom, sbi.rcScrollBar.right );
179 
180     sbi.cbSize = sizeof(sbi);
181     ret = pGetScrollBarInfo( hMainWnd, OBJID_VSCROLL, &sbi);
182     ok( ret, "The GetScrollBarInfo() call should not fail.\n" );
183     GetWindowRect( hMainWnd, &rect );
184     ok( ret, "The GetWindowRect() call should not fail.\n" );
185     MoveWindow( hMainWnd, rect.left+5, rect.top+5,
186                 rect.right-rect.left, rect.bottom-rect.top, TRUE );
187     rect = sbi.rcScrollBar;
188     OffsetRect(&rect, 5, 5);
189     ret = pGetScrollBarInfo( hMainWnd, OBJID_VSCROLL, &sbi);
190     ok( ret, "The GetScrollBarInfo() call should not fail.\n" );
191     ok( EqualRect(&rect, &sbi.rcScrollBar),
192         "PreviousRect(%d, %d, %d, %d) != CurrentRect(%d, %d, %d, %d)\n",
193         rect.top, rect.left, rect.bottom, rect.right,
194         sbi.rcScrollBar.top, sbi.rcScrollBar.left,
195         sbi.rcScrollBar.bottom, sbi.rcScrollBar.right );
196 }
197 
198 START_TEST ( scroll )
199 {
200     WNDCLASSA wc;
201 
202     wc.style = CS_HREDRAW | CS_VREDRAW;
203     wc.cbClsExtra = 0;
204     wc.cbWndExtra = 0;
205     wc.hInstance = GetModuleHandleA(NULL);
206     wc.hIcon = NULL;
207     wc.hCursor = LoadCursorA(NULL, IDC_IBEAM);
208     wc.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
209     wc.lpszMenuName = NULL;
210     wc.lpszClassName = "MyTestWnd";
211     wc.lpfnWndProc = MyWndProc;
212     RegisterClassA(&wc);
213 
214     hMainWnd = CreateWindowExA( 0, "MyTestWnd", "Scroll",
215       WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL,
216       CW_USEDEFAULT, CW_USEDEFAULT, 100, 100, NULL, NULL, GetModuleHandleA(NULL), 0 );
217 
218     if ( !ok( hMainWnd != NULL, "Failed to create parent window. Tests aborted.\n" ) )
219         return;
220 
221     assert( hScroll );
222 
223     scrollbar_test1();
224     scrollbar_test2();
225     scrollbar_test3();
226     scrollbar_test4();
227 
228     DestroyWindow(hScroll);
229     DestroyWindow(hMainWnd);
230 }
231 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.