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

📄 stockobj.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
字号:
/***************************************************
Copyright(c) 版权所有,1998-2005微逻辑。保留所有权利。
***************************************************/
/**************************************************
文件说明:
版本号:2.0.0
开发时期:1999
作者:李林
修改记录:
**************************************************/

#include <eframe.h>
#include <eassert.h>
#include <gwmeobj.h>
#include <gdc.h>
#include <epwin.h>
#include <gwmesrv.h>

//保存所有的stock对象  
static HGDIOBJ hStockObjects[SYS_STOCK_GDIOBJ_NUM];
//
extern HBRUSH _CreateSysBrush( COLORREF color, UINT uiStyle );
extern HPEN _CreateSysPen( COLORREF color, UINT uiStyle );
extern HFONT _CreateSysFont( UINT id );
extern HBITMAP _CreateSysBitmap( int nWidth, int nHeight, UINT cBitsPerPel );
extern HRGN _CreateSysRgn( int nLeftRect, int nTopRect, int nRightRect, int nBottomRect );

// **************************************************
// 声明:void LoadGwmeResource( HINSTANCE hInstance )
// 参数:
// 	hInstance - 实例句柄
// 返回值:
//	无
// 功能描述:
//	初始化图形资源
// 引用: 
//	
// ************************************************
#define DEBUG_LoadGwmeResource 0
static void LoadGwmeResource( HINSTANCE hInstance )
{
	int yIconHeight = WinSys_GetMetrics(SM_CYSMICON);
    int xIconWidth = WinSys_GetMetrics(SM_CXSMICON);

	DEBUGMSG( DEBUG_LoadGwmeResource, ( "LoadGwmeResource entry.\r\n" ) );
	/*
	hicoSysMenu = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OIC_SYSLOGO), IMAGE_ICON, xIconWidth, yIconHeight, LR_SHARED );
	hicoGraySysMenu = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OIC_SYSLOGO_GRAY), IMAGE_ICON, xIconWidth, yIconHeight, LR_SHARED );
	hbmpClose = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_CLOSE), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hbmpGrayClose = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_CLOSE_GRAY ), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hbmpOk = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_OK), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hbmpGrayOk = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_OK_GRAY), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hbmpHelp = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_HELP), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hbmpGrayHelp = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_HELP_GRAY), IMAGE_BITMAP, 0, 0, LR_SHARED );
	*/
	hStockObjects[SYS_STOCK_LOGO] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OIC_SYSLOGO), IMAGE_ICON, xIconWidth, yIconHeight, LR_SHARED );
	hStockObjects[SYS_STOCK_LOGO_GRAY] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OIC_SYSLOGO_GRAY), IMAGE_ICON, xIconWidth, yIconHeight, LR_SHARED );
	hStockObjects[SYS_STOCK_CAPTION_CLOSE] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_CLOSE), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hStockObjects[SYS_STOCK_CAPTION_CLOSE_GRAY] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_CLOSE_GRAY ), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hStockObjects[SYS_STOCK_CAPTION_OK] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_OK), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hStockObjects[SYS_STOCK_CAPTION_OK_GRAY] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_OK_GRAY), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hStockObjects[SYS_STOCK_CAPTION_HELP] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_HELP), IMAGE_BITMAP, 0, 0, LR_SHARED );
	hStockObjects[SYS_STOCK_CAPTION_HELP_GRAY] = WinGdi_LoadImage( NULL, MAKEINTRESOURCE(OBM_CAPTION_HELP_GRAY), IMAGE_BITMAP, 0, 0, LR_SHARED );

	DEBUGMSG( DEBUG_LoadGwmeResource, ( "LoadGwmeResource leave.\r\n" ) );
}

/**************************************************
声明:BOOL _InitStockObject( void )
参数:
返回值:
	假如成功,返回TRUE; 否则,返回FALSE
功能描述:
	初始化stock对象
引用: 
	当gwme系统加载/初始化时,会调用该函数
************************************************/

BOOL _InitStockObject( void )
{
	memset( hStockObjects, 0, sizeof( hStockObjects ) );

	hStockObjects[WHITE_BRUSH] = _CreateSysBrush( CL_WHITE, BS_SOLID );
	hStockObjects[BLACK_BRUSH] = _CreateSysBrush( CL_BLACK, BS_SOLID );
	hStockObjects[LTGRAY_BRUSH] = _CreateSysBrush( CL_LIGHTGRAY, BS_SOLID );
	hStockObjects[GRAY_BRUSH] = _CreateSysBrush( CL_GRAY, BS_SOLID );//hStockObjects[DKGRAY_BRUSH];
	hStockObjects[DKGRAY_BRUSH] = _CreateSysBrush( CL_DARKGRAY, BS_SOLID );
	

	hStockObjects[NULL_BRUSH] = _CreateSysBrush( 0, BS_NULL );
	
	hStockObjects[WHITE_PEN] = _CreateSysPen( CL_WHITE, PS_SOLID );
	hStockObjects[BLACK_PEN] = _CreateSysPen( CL_BLACK, PS_SOLID );
    hStockObjects[NULL_PEN] = _CreateSysPen( CL_BLACK, PS_NULL );

	hStockObjects[SYSTEM_FONT] = _CreateSysFont( _uSysFontID );
	hStockObjects[SYSTEM_FONT_SYMBOL] = _CreateSysFont( _uSysSymbolFontID );
#ifdef HAVE_16X16_SYMBOL_FIXED
	hStockObjects[SYSTEM_FONT_SYMBOL16X16] = _CreateSysFont( SYSTEM_FONT_SYMBOL16X16 );
#endif
#ifdef HAVE_24X24_SYMBOL_FIXED
	hStockObjects[SYSTEM_FONT_SYMBOL24X24] = _CreateSysFont( SYSTEM_FONT_SYMBOL24X24 );
#endif
#ifdef HAVE_8X16_PHONETIC_FIXED
	hStockObjects[SYSTEM_FONT_PHONETIC] = _CreateSysFont( SYSTEM_FONT_PHONETIC );
#endif
#ifdef HAVE_8X8_ENG_FIXED
	hStockObjects[SYSTEM_FONT_ENGLISH8X8] = _CreateSysFont( SYSTEM_FONT_ENGLISH8X8 );
#endif
#ifdef HAVE_8X6_ENG_FIXED
	hStockObjects[SYSTEM_FONT_ENGLISH8X6] = _CreateSysFont( SYSTEM_FONT_ENGLISH8X6 );
#endif
#ifdef HAVE_16X16_CHS_FIXED
	hStockObjects[SYSTEM_FONT_CHINESE16X16] = _CreateSysFont( SYSTEM_FONT_CHINESE16X16 );
#endif
#ifdef HAVE_24X24_CHS_FIXED
	hStockObjects[SYSTEM_FONT_CHINESE24X24] = _CreateSysFont( SYSTEM_FONT_CHINESE24X24 );
#endif

	hStockObjects[SYS_STOCK_BITMAP1x1] = _CreateSysBitmap( 1, 1, 1 );

	hStockObjects[SYS_STOCK_RGN] = _CreateSysRgn( 0, 0, 0, 0 );
	hStockObjects[SYS_STOCK_WHITE] = (HGDIOBJ)lpDrvDisplayDefault->lpRealizeColor( CL_WHITE, NULL, 0, 0 );
	hStockObjects[SYS_STOCK_BLACK] = (HGDIOBJ)lpDrvDisplayDefault->lpRealizeColor( CL_BLACK, NULL, 0, 0 );

	LoadGwmeResource( hgwmeInstance );
	
	return TRUE;
}

BOOL _GetSysFontSize( SIZE * lpSize )
{
	if( hStockObjects[SYSTEM_FONT] )
	{
		_LPFONT lpFont = _GetHFONTPtr( hStockObjects[SYSTEM_FONT] );
		lpSize->cx = lpFont->lpDriver->lpWordWidth( hStockObjects[SYSTEM_FONT], 'X' );
		lpSize->cy = lpFont->lpDriver->lpWordHeight( hStockObjects[SYSTEM_FONT], 'X' );
		return TRUE;
	}
	return FALSE;
}

/**************************************************
声明:HGDIOBJ WINAPI OEM_GetStockObject( int fObject )
参数:
	fObject - stock对象索引
返回值:
	假如成功,返回有效的句柄;否则,返回NULL
功能描述:
	从系统得到一个stock对象
引用: 
	内部使用
************************************************/
HGDIOBJ WINAPI OEM_GetStockObject( int fObject )
{
	if( fObject >= 0 && fObject < SYS_STOCK_GDIOBJ_NUM )
	{
		return hStockObjects[fObject];
	}
	else
	{
		ASSERT( 0 );
	}
	SetLastError( ERROR_INVALID_PARAMETER ); 
	return NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -