1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // ScrollBarExt.cpp: implementation of the CScrollBarExt class.
- //
- //////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "ScrollBarExt.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
- WNDPROC CScrollBarExt::m_cWndProc = NULL;
- int CScrollBarExt::pos = 0;
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
- LRESULT CScrollBarExt::DefWindowProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
- {
- switch( message )
- {
- case WM_PAINT:
- case WM_NCPAINT:
- case WM_LBUTTONDOWN:
- case WM_LBUTTONUP:
- case WM_MOUSEMOVE:
- CallWindowProc( m_cWndProc, hwnd, message, wParam, lParam );
- // ShowWindow(hwnd, SW_HIDE);
- OnPaint(hwnd);
- return 0;
- case WM_ERASEBKGND:
- return 1;
- default:
- break;
- }
- return CallWindowProc( m_cWndProc, hwnd, message, wParam, lParam );
- }
-
- void CScrollBarExt::OnPaint( HWND hWnd )
- {
- RECT rcItem;
- HDC hdc=GetWindowDC(hWnd);
- GetWindowRect(hWnd, &rcItem);
- rcItem.right -=rcItem.left ;
- rcItem.bottom -=rcItem.top ;
- rcItem.top =rcItem.left =0;
- const int nFrameSize = GetSystemMetrics( SM_CXEDGE );
- const int nScrollSize = GetSystemMetrics( SM_CXHSCROLL );
- RECT rc;
- if(rcItem.right >rcItem.bottom )//根据滚动的长宽判断是水平还是垂直..水平
- {
- rc.left = rcItem.left + nFrameSize;
- rc.top = rcItem.bottom - nFrameSize - nScrollSize;
- rc.right = rcItem.right - nFrameSize;
- rc.bottom = rcItem.bottom - nFrameSize;
- DrawScrollBar(hWnd, hdc, rc, SB_HORZ, 1 );
- }
- else
- {
- rc.left = rcItem.right - nFrameSize - nScrollSize; rc.top = rcItem.top + nFrameSize;
- rc.right = rcItem.right - nFrameSize; rc.bottom = rcItem.bottom - nFrameSize;
- DrawScrollBar(hWnd, hdc, rc, SB_VERT, 1 );
- }
- }
|