//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #include "mxBitmapButton.h" #include "hlfaceposer.h" mxBitmapButton::mxBitmapButton( mxWindow *parent, int x, int y, int w, int h, int id /*= 0*/, const char *bitmap /* = 0 */ ) : mxWindow( parent, x, y, w, h, "" ) { setId( id ); m_bmImage.valid = false; SetImage( bitmap ); HWND wnd = (HWND)getHandle(); DWORD style = GetWindowLong( wnd, GWL_STYLE ); style |= WS_CLIPSIBLINGS; SetWindowLong( wnd, GWL_STYLE, style ); } mxBitmapButton::~mxBitmapButton( void ) { DeleteImage(); } void mxBitmapButton::redraw() { HWND wnd = (HWND)getHandle(); if ( !wnd ) return; if ( !m_bmImage.valid ) return; RECT rc; GetClientRect( wnd, &rc ); HDC dc = GetDC( wnd ); DrawBitmapToDC( dc, 0, 0, w(), h(), m_bmImage ); ReleaseDC( wnd, dc ); ValidateRect( wnd, &rc ); } int mxBitmapButton::handleEvent( mxEvent * event ) { int iret = 0; switch (event->event) { case mxEvent::MouseUp: // Send message to parent HWND parent = (HWND)( getParent() ? getParent()->getHandle() : NULL ); if ( parent ) { LPARAM lp; WPARAM wp; wp = MAKEWPARAM( getId(), BN_CLICKED ); lp = (long)getHandle(); SendMessage( parent, WM_COMMAND, wp, lp ); iret = 1; } break; } return iret; } void mxBitmapButton::SetImage( const char *bitmapname ) { if ( m_bmImage.valid ) { DeleteImage(); } LoadBitmapFromFile( bitmapname, m_bmImage ); } void mxBitmapButton::DeleteImage( void ) { if ( m_bmImage.valid ) { DeleteObject( m_bmImage.image ); m_bmImage.valid = false; } }