mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
97 lines
1.7 KiB
C++
97 lines
1.7 KiB
C++
//========= 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;
|
|
}
|
|
}
|