pawellek1995 Temat założony przez niniejszego użytkownika |
[C++][WinApi] ScrollBar Poziomy » 2013-10-11 14:10:44 Witam, Napisałem kod na obsługę poziomego ScrollBara kompiluje się ale nie działa nie wiem w czym problem gdy przesuwam to nic się nie dzieje. Proszę o pomoc o to kawałek kodu: case WS_HSCROLL: { ZeroMemory( & si, sizeof( si ) ); si.cbSize = sizeof( SCROLLINFO ); si.fMask = SIF_POS | SIF_PAGE | SIF_TRACKPOS; GetScrollInfo( hwnd, SB_HORZ, & si ); int pozycja = si.nPos; switch( LOWORD( wParam ) ) { case SB_LEFT: pozycja = 0; break; case SB_RIGHT: pozycja = 1000; break; case SB_LINELEFT: if( pozycja > 0 ) { pozycja--; } break; case SB_LINERIGHT: if( pozycja < 1000 ) { pozycja++; } break; case SB_PAGELEFT: pozycja -= si.nPage; if( pozycja < 0 ) { pozycja = 0; } break; case SB_PAGERIGHT: pozycja += si.nPage; if( pozycja > 1000 ) { pozycja = 1000; } break; case SB_THUMBPOSITION: pozycja = si.nTrackPos; break; case SB_THUMBTRACK: pozycja = si.nTrackPos; break; } int dy = -( pozycja - si.nPos ); ScrollWindowEx( hwnd, 0, dy,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); ZeroMemory( & si, sizeof( si ) ); si.cbSize = sizeof( SCROLLINFO ); si.fMask = SIF_POS; si.nPos = pozycja; SetScrollInfo( hwnd, SB_HORZ, & si, TRUE ); } break;
|
|
pawellek1995 Temat założony przez niniejszego użytkownika |
» 2013-10-11 15:05:48 Napisałem inny sposób przesuwania okna za pomocą strzałek gdyby ktoś potrzebował zamieszczam kod: case WM_KEYDOWN: switch(( int ) wParam ) { case VK_RIGHT: if( HIBYTE( GetKeyState( VK_CONTROL ) ) ) { ScrollWindowEx( hwnd, - 10, 0,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } else { ScrollWindowEx( hwnd, - 1, 0,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } break; case VK_LEFT: if( HIBYTE( GetKeyState( VK_CONTROL ) ) ) { ScrollWindowEx( hwnd, 10, 0,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } else { ScrollWindowEx( hwnd, 1, 0,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } break; case VK_DOWN: if( HIBYTE( GetKeyState( VK_CONTROL ) ) ) { ScrollWindowEx( hwnd, 0, - 10,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } else { ScrollWindowEx( hwnd, 0, - 1,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } break; case VK_UP: if( HIBYTE( GetKeyState( VK_CONTROL ) ) ) { ScrollWindowEx( hwnd, 0, 10,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } else { ScrollWindowEx( hwnd, 0, 1,( CONST RECT * ) NULL,( CONST RECT * ) NULL,( HRGN ) NULL,( LPRECT ) NULL, SW_SCROLLCHILDREN | SW_INVALIDATE | SW_ERASE ); UpdateWindow( hwnd ); } break; }
break;
Gdyby ktoś pomógł w napisaniu obsługi scrollbara poziomego i znalazł błąd byłbym wdzięczny. Jeśli nie temat zamknę. |
|
DejaVu |
» 2013-10-17 11:57:38 |
|
« 1 » |