⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmpbtn.cpp

📁 WINCE下的多功能位图按钮实现 可作为单选按钮
💻 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 + -