You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
1.7 KiB
96 lines
1.7 KiB
//========= 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; |
|
} |
|
}
|
|
|