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

📄 sysset.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
字号:
/******************************************************
Copyright(c) 版权所有,1998-2005微逻辑。保留所有权利。
******************************************************/


/*****************************************************
文件说明:gwme系统设置
版本号:3.0.0
开发时期:1999  
作者:李林
修改记录:
******************************************************/

#include <eframe.h>
#include <eassert.h>
#include <gwmeobj.h>

// like GetSystemMetrics
#define CAPTION_HEIGHT 20
#define UNDEF_VALUE -1
#define SYS_INDEX_NUM  ( sizeof(iSysSettings) / sizeof(int) )

//默认的系统度量设置
static int iSysSettings[] = {
                   UNDEF_VALUE,//#define SM_CXSCREEN             0
                   UNDEF_VALUE,//#define SM_CYSCREEN             1
                   13,//#define SM_CXVSCROLL            2
                   13,//#define SM_CYHSCROLL            3
                   CAPTION_HEIGHT,//#define SM_CYCAPTION            4
                   1,//#define SM_CXBORDER             5
                   1,//#define SM_CYBORDER             6
                   2,//#define SM_CXDLGFRAME           7
                   2,//#define SM_CYDLGFRAME           8
                   2,//#define SM_CXFRAME              9
                   2,//#define SM_CYFRAME              10
                   32,//#define SM_CXICON               11
                   32,//#define SM_CYICON               12
                   32,//#define SM_CXCURSOR             13
                   32,//#define SM_CYCURSOR             14
                   18,//#define SM_CYMENU               15
                   UNDEF_VALUE,//#define SM_CXFULLSCREEN         16
                   UNDEF_VALUE,//#define SM_CYFULLSCREEN         17
                   13,//#define SM_CYVSCROLL            18
                   13,//#define SM_CXHSCROLL            19
                   0,//#define SM_DEBUG                20
                   40,//#define SM_CXMIN                21
                   40,//#define SM_CYMIN                22
                   17,//#define SM_CXSIZE               23
                   CAPTION_HEIGHT,//#define SM_CYSIZE               24
                   40,//#define SM_CXMINTRACK           25
                   40,//#define SM_CYMINTRACK           26
                   32,//#define SM_CXICONSPACING        27
                   32,//#define SM_CYICONSPACING        28
                   FALSE,//#define SM_PENWINDOWS           29
                   UNDEF_VALUE,//#define SM_CXMAXTRACK           30
                   UNDEF_VALUE,//#define SM_CYMAXTRACK           31
                   UNDEF_VALUE,//#define SM_CXMAXIMIZED          32
                   UNDEF_VALUE,//#define SM_CYMAXIMIZED          33
                   FALSE,//#define SM_NETWORK              34
                   16,//#define SM_CXSMICON             35
                   16,//#define SM_CYSMICON             36
                   13,//#define SM_CYVTHUMB             37
                   13,//#define SM_CXHTHUMB             38
                   UNDEF_VALUE,//#define SM_CXTOUCH              39
                   UNDEF_VALUE,//#define SM_CYTOUCH              40
                   UNDEF_VALUE,//#define SM_XTOUCHOFF            41
                   UNDEF_VALUE,//#define SM_YTOUCHOFF            42
//#ifdef ARM_CPU
  //                 (800 - 240) / 2,//0,//#define SM_XVIEW                43
    //               (600 - 320) / 2 - 35,//0,//#define SM_YVIEW                44
//#else
				   0,
				   0,
				   0,		//SM_CXSYSFONT
				   0,		//SM_CYSYSFONT
//#endif
				   0,	//SM_XCENTER              47		//对话框居中 X
				   0,	//SM_YCENTER              48		//对话框居中 Y
				   0,	//SM_CXCENTER             49		//对话框居中 CX
				   0,   //SM_CYCENTER             50		//对话框居中 CY					
				   0,	//SM_CYLISTITEM           51		//定义List item默认高度
//				   0,   //SM_BITS_PERPEL          52        //系统默认的象素点格式
};

#define CONTROL_FACE RGB( 0xf0, 0xf0, 0xf0 )
//默认的系统颜色设置
static DWORD dwSysColor[SYS_COLOR_NUM] = {
//  COLOR_3DDKSHADOW            0
//  Dark shadow for three-dimensional display elements. 
//  深灰-用于三维显示的阴影部分
    RGB( 0x80, 0x80, 0x80 ),//CL_BLACK,

//  COLOR_3DFACE                1 
//  COLOR_BTNFACE               1
//  Face color for three-dimensional display elements. 
//  亮灰-用于三维显示的正面部分
    CONTROL_FACE,
    
//  COLOR_3DHILIGHT             2
//  COLOR_3DHIGHLIGHT           2
//  COLOR_BTNHILIGHT            2  
//  COLOR_BTNHIGHLIGHT          2
//  Highlight color for three-dimensional display elements 
//  (for edges facing the light source.) 
//  高亮-用于三维显示的高亮部分 
	RGB( 0xff, 0xff, 0xff ),
	
//  COLOR_3DLIGHT               3
//  Light color for three-dimensional display elements 
//  (for edges facing the light source.) 
//  亮-用于三维显示的亮部分 
    RGB( 0xf8, 0xf8, 0xf8 ),//RGB( 0xf0, 0xf0, 0xf0 ),

//  COLOR_3DSHADOW              4
//  COLOR_BTNSHADOW Shadow color for three-dimensional display elements 
//  (for edges facing away from the light source). 
//  黑-用于三维显示的黑部分 
    CL_BLACK,

//  COLOR_ACTIVEBORDER    5  
//  Active window border. 
//  活动窗口的边界颜色
	CL_BLACK,

//  COLOR_ACTIVECAPTION         6
//  Active window title bar. 
//  活动窗口的标题条颜色	
    RGB( 0xc0, 0xc0, 0xc0 ),

//  COLOR_APPWORKSPACE          7
//  Background color of multiple document interface (MDI) applications. 
//  多文档活动窗口的背景
	CL_WHITE,

//  COLOR_BACKGROUND            8
//  COLOR_DESKTOP               8
//  Desktop. 
//  桌面背景
	CL_WHITE,

//  COLOR_BTNTEXT               9
//  Text on push buttons. 
//  按钮文本
    CL_BLACK,

//  COLOR_CAPTIONTEXT           10
//  Text in caption, size box, and scroll bar arrow box. 
//  标题条文本颜色
	CL_BLACK,

//  COLOR_GRAYTEXT              11
//  Grayed (disabled) text. This color is set to 0 
//  if the current display driver does not support a solid gray color. 
//  灰文本 或 失效文字	
    CL_DARKGRAY,

//  COLOR_HIGHLIGHT             12 
//  Item(s) selected in a control. 
//  高亮-在控件里被选择的项目背景
    CL_BLUE,
	
//  COLOR_HIGHLIGHTTEXT         13
//  Text of item(s) selected in a control. 
//  高亮-在控件里被选择的项目的文本    
    CL_YELLOW,

//  COLOR_INACTIVEBORDER        14
//  Inactive window border. 
//  非活动边界
    CL_BLACK,

//  COLOR_INACTIVECAPTION       15
//  Inactive window caption. 
//  非活动标题栏
	RGB( 0xe0, 0xe0, 0xe0 ),

//  COLOR_INACTIVECAPTIONTEXT   16
//  Color of text in an inactive caption. 
//  非活动标题栏的文本
    CL_DARKGRAY, 

//  COLOR_INFOBK                17
//  Background color for ToolTip controls. 
//      
    CL_YELLOW,

//  COLOR_INFOTEXT              18
//  Text color for ToolTip controls. 
//      
    CL_BLACK,

//  COLOR_MENU                  19 
//  Menu background. 
//  菜单背景    
    CL_WHITE,

//  COLOR_MENUTEXT              20
//  Text in menus. 
//  菜单文本
    CL_BLACK,

//  COLOR_SCROLLBAR             21
//  Scroll bar gray area. 
//  滚动条
    RGB( 0x00, 0x66, 0xff ),

//  COLOR_STATIC                22
//  Background color for static controls and dialogs. 
//  静态控件或对话框的背景
    CONTROL_FACE,

//  COLOR_STATICTEXT            23
//  Text color for static controls
//  静态控件文本
    CL_BLACK,

//  COLOR_WINDOW                24
//  Window background. 
//  窗口背景    
    CL_WHITE,

//  COLOR_WINDOWFRAME           25
//  Window frame. 
//  窗口框架    
    CL_BLACK,
	
//  COLOR_WINDOWTEXT            26
//  Text in windows.
//  窗口文本
    CL_BLACK,
	//scrollbar thumb
	CONTROL_FACE			
};

//默认的系统刷子
static HBRUSH hSysColorBrush[SYS_COLOR_NUM];


// **************************************************
// 声明:int WINAPI WinSys_SetMetrics( int nIndex, int iNewValue )
// 参数:
// 	IN nIndex - 索引值(标示那一个度量)
// 	IN iNewValue - 新的度量值
// 返回值:
//	假如成功,返回老的值;否则,返回0
// 功能描述:
//	设置度量
// 引用: 
//	系统API
// ************************************************


int WINAPI WinSys_SetMetrics( int nIndex, int iNewValue )
{
	int v = 0;
	if( (UINT)nIndex < SYS_INDEX_NUM )
	{
		v = iSysSettings[nIndex];
		iSysSettings[nIndex] = iNewValue;
	}
	else
	{
		WARNMSG( 1, ("error at WinSys_SetMetrics: invalid index value=%d.\r\n", nIndex ) );
    	SetLastError( ERROR_INVALID_PARAMETER );		
	}
	return v;
}

// **************************************************
// 声明:int WINAPI WinSys_GetMetrics( int nIndex )
// 参数:
// 	IN nIndex - 索引值(标示那一个度量)
// 返回值:
//	假如成功,返回老的值;否则,返回0
// 功能描述:
//	得到度量	
// 引用: 
//	系统API
// ************************************************

int WINAPI WinSys_GetMetrics( int nIndex )
{
	if( (UINT)nIndex < SYS_INDEX_NUM )
	{
		return iSysSettings[nIndex];
	}
	WARNMSG( 1, ("error at WinSys_GetMetrics:invalid index value=%d.\r\n", nIndex ) );
	SetLastError( ERROR_INVALID_PARAMETER );
	return 0;
}


// **************************************************
// 声明:DWORD WINAPI WinSys_GetColor(int nIndex)
// 参数:
// 	IN nIndex - 索引值(标示那一个颜色)
// 返回值:
//	假如成功,返回老的值;否则,返回0
// 功能描述:
//	得到系统颜色
// 引用: 
//	系统API
// ************************************************

DWORD WINAPI WinSys_GetColor( int nIndex)
{
	if( (UINT)nIndex < SYS_COLOR_NUM )
		return dwSysColor[nIndex];
	else
	{
	    WARNMSG( 1, ("error at WinSys_GetColor:invalid index value=%d.\r\n", nIndex ) );
    	SetLastError( ERROR_INVALID_PARAMETER );
	}
	return 0;
}

// **************************************************
// 声明:BOOL WINAPI WinSys_SetColors(
//				  int cElements, 
//				  const int *lpaElements, 
//                  const COLORREF *lpaRgbValues )
// 参数:
// 	IN cElements - 需要设置的颜色数量
// 	IN lpaElements - 需要设置的颜色索引组
// 	IN lpaRgbValues - COLORREF指针,需要设置的颜色值
// 返回值:
//	假如成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	设置新的系统颜色
// 引用: 
//	系统API
// ************************************************

BOOL WINAPI WinSys_SetColors(
				  int cElements, 
				  const int *lpaElements, 
                  const COLORREF *lpaRgbValues )
{
	extern BOOL _SetSysSolidBrushColor( HBRUSH hBrush , COLORREF color );
	int i;

	for( i = 0; i < cElements; i++ )
	{
	    if( (UINT)*lpaElements  < SYS_COLOR_NUM )
		{
		    dwSysColor[*lpaElements] = *lpaRgbValues;
			_SetSysSolidBrushColor( hSysColorBrush[*lpaElements], *lpaRgbValues );
		}
		else
		{
	        WARNMSG( 1, ("error at WinSys_SetColors:invalid index(%d) value=%d.\r\n", i, *lpaElements ) );
    	    SetLastError( ERROR_INVALID_PARAMETER );
    	    break;
		}
		lpaElements++;
		lpaRgbValues++;
	}
	return i;
}

// **************************************************
// 声明:HBRUSH WINAPI WinSys_GetColorBrush( int nIndex )
// 参数:
// 	IN nIndex - 索引值(标示那一种颜色刷子)
// 返回值:
//	假如成功,返回刷子句柄;否则,返回NULL
// 功能描述:
//	得到系统刷子
// 引用: 
//	系统API
// ************************************************

HBRUSH WINAPI WinSys_GetColorBrush( int nIndex )
{
	if( (UINT)nIndex < SYS_COLOR_NUM )
		return hSysColorBrush[nIndex];
	else
	{
        WARNMSG( 1, ("error at WinSys_GetColorBrush:invalid index value=%d.\r\n", nIndex ) );
	    SetLastError( ERROR_INVALID_PARAMETER );
	}
	return NULL;
}

// **************************************************
// 声明:BOOL _InitSysSetting( void )
// 参数:
// 	无
// 返回值:
//	进入成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	初始化系统设置
// 引用: 
//	当gwme系统启动时,回调用该函数
// ************************************************

extern HBRUSH _CreateSysBrush( COLORREF color, UINT uiStyle );
extern HBRUSH _DeleteSysSolidBrush( HBRUSH hBrush );

BOOL _InitSysSetting( void )
{
	extern BOOL _GetSysFontSize( LPSIZE lpSize );
	SIZE size;
	int i;
	//初始化系统刷子
	for( i = 0; i < SYS_COLOR_NUM; i++ )
	{
		hSysColorBrush[i] = _CreateSysBrush( WinSys_GetColor( i ), BS_SOLID );
		if( hSysColorBrush[i] == NULL )
			return FALSE;
	}
	//初始化系统度量
	iSysSettings[SM_CXMAXTRACK] = lpDisplayBitmap->bmWidth;
	iSysSettings[SM_CYMAXTRACK] = lpDisplayBitmap->bmHeight;
	iSysSettings[SM_CXMAXIMIZED] = lpDisplayBitmap->bmWidth;
	iSysSettings[SM_CYMAXIMIZED] = lpDisplayBitmap->bmHeight;
	iSysSettings[SM_CXTOUCH] = lpDisplayBitmap->bmWidth;
	iSysSettings[SM_CYTOUCH] = lpDisplayBitmap->bmHeight;
	iSysSettings[SM_XTOUCHOFF] = 0;
    iSysSettings[SM_YTOUCHOFF] = 0;
	iSysSettings[SM_CXFULLSCREEN] = lpDisplayBitmap->bmWidth;
	iSysSettings[SM_CYFULLSCREEN] = lpDisplayBitmap->bmHeight;
	iSysSettings[SM_CXSCREEN] = lpDisplayBitmap->bmWidth;
	iSysSettings[SM_CYSCREEN] = lpDisplayBitmap->bmHeight;

	iSysSettings[SM_CXCENTER] = lpDisplayBitmap->bmWidth;
	iSysSettings[SM_CYCENTER] = lpDisplayBitmap->bmHeight;

	if( _GetSysFontSize( &size ) )
	{
		iSysSettings[SM_CYCAPTION] = size.cy + 4;
		iSysSettings[SM_CYSIZE] = iSysSettings[SM_CYCAPTION];
		iSysSettings[SM_CXSIZE] = size.cx * 2 + 1;
		iSysSettings[SM_CYMENU] = size.cy + 2;
		iSysSettings[SM_CXSYSFONT] = size.cx;
		iSysSettings[SM_CYSYSFONT] = size.cy;
		iSysSettings[SM_CYLISTITEM] = size.cy + 4;
		
	}

	//
	return TRUE;
}

// **************************************************
// 声明:void _DeInitSysColorBrush( void )
// 参数:
//    无
// 返回值:
//	无
// 功能描述:
//	当gwme系统退出时,回调用该函数
// 引用: 
// ************************************************

void _DeInitSysColorBrush( void )
{
	int i;
	//这部分代码可以不去做,因为gwme系统退出时也意外做操作系统需要关掉
	//因此不需要去做_DeleteSysSolidBrush的代码
	//但为了代码的完整性(分配-释放)以及不系统性能的影响微不足道,我保留该代码。
	for( i = 0; i < SYS_COLOR_NUM; i++ )
	{
		_DeleteSysSolidBrush( hSysColorBrush[i] );
	}
}

⌨️ 快捷键说明

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