97 lines
1.7 KiB
C++
97 lines
1.7 KiB
C++
|
//========= Copyright <20> 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;
|
|||
|
}
|
|||
|
}
|