|
|
//========= Copyright � 1996-2005, 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; } }
|