?? bmpbtn.cpp
字號:
/////////////////////////////////////////////////////////////////////
/////////////////////// BmpBtn.cpp ///////////////////////////////////
////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "BmpBtn.h"
BmpBtn::BmpBtn()
{
memset( hbmp, 0x00, sizeof( HBITMAP )*BTN_BMP_NUM );
nCtrlKind = CTRL_BMP;
nStatus = 0;
}
BmpBtn::~BmpBtn()
{
deleteBmpList();
}
BOOL BmpBtn::deleteBmpList()
{
nCtrlKind = CTRL_BMP;
nStatus = 0;
for( int i=0; i<BTN_BMP_NUM; ++i ){
if( hbmp[i] ){
::DeleteObject( hbmp[i] );
hbmp[i] = 0x00;
}
}
return TRUE;
}
BOOL BmpBtn::loadBmpRes( int nCtlKind, unsigned int nID_UE, unsigned int nID_DE, unsigned int nID_UD, unsigned int nID_DD )
{
nCtrlKind = nCtlKind;
if( nID_UE ){
hbmp[BTN_UP_ENABLE] = LoadBitmap( ::AfxGetInstanceHandle(), MAKEINTRESOURCE( nID_UE ) );
// setStatus( BTN_UP_ENABLE );
}
if( nID_DE ) hbmp[BTN_DOWN_ENABLE] = LoadBitmap( ::AfxGetInstanceHandle(), MAKEINTRESOURCE( nID_DE ) );
if( nID_UD ) hbmp[BTN_UP_DISABLE] = LoadBitmap( ::AfxGetInstanceHandle(), MAKEINTRESOURCE( nID_UD ) );
if( nID_DD ) hbmp[BTN_DOWN_DISABLE] = LoadBitmap( ::AfxGetInstanceHandle(), MAKEINTRESOURCE( nID_DD ) );
return TRUE;
}
BOOL BmpBtn::setStatus( unsigned int nStatusFlg )
{
nStatus = nStatusFlg;
if( hbmp[nStatus] > 0 && nStatusFlg < BTN_BMP_NUM ){
ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
SetBitmap( hbmp[nStatus] );
return TRUE;
}
return FALSE;
}
BOOL BmpBtn::enableWindow( BOOL bEnable )
{
switch( nStatus )
{
case BTN_UP_ENABLE:
case BTN_UP_DISABLE:
bEnable ? setStatus( BTN_UP_ENABLE ) : setStatus( BTN_UP_DISABLE );
break;
case BTN_DOWN_ENABLE:
case BTN_DOWN_DISABLE:
bEnable ? setStatus( BTN_DOWN_ENABLE ) : setStatus( BTN_DOWN_DISABLE );
break;
default:
break;
}
::EnableWindow( m_hWnd, bEnable);
return TRUE;
}
unsigned int BmpBtn::getStatus()
{
return nStatus;
}
void BmpBtn::theProc( UINT message, WPARAM wParam, LPARAM lParam)
{
if( m_hWnd != (HWND) lParam ) return;
switch( message ){
case WM_LBUTTONDOWN :
if( (nCtrlKind == CTRL_CHECK || nCtrlKind == CTRL_BTN) && nStatus<BTN_UP_DISABLE){
onCheck();
}
break;
case WM_LBUTTONUP :
if( nCtrlKind == CTRL_BTN && nStatus<BTN_UP_DISABLE ){
onCheck();
}
break;
default:
return ;
}
return;
}
LRESULT BmpBtn::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
/*
WM_COMMAND wNotifyCode = HIWORD(wParam);
wID = LOWORD(wParam);
hwndCtl = (HWND) lParam;
*/
switch( message ){
case WM_LBUTTONDOWN :
if( (nCtrlKind == CTRL_CHECK || nCtrlKind == CTRL_BTN) && nStatus<BTN_UP_DISABLE){
onCheck();
}
break;
case WM_LBUTTONUP :
if( nCtrlKind == CTRL_BTN && nStatus<BTN_UP_DISABLE ){
onCheck();
}
break;
default:
return CWnd::WindowProc(message, wParam, lParam);
}
return CWnd::WindowProc(message, wParam, lParam);
}
unsigned int BmpBtn::onCheck()
{
if( nStatus == BTN_DOWN_ENABLE ){
setStatus( BTN_UP_ENABLE );
}else if( nStatus == BTN_UP_ENABLE ){
setStatus( BTN_DOWN_ENABLE );
}
return nStatus;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -