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

📄 gwme.c

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


/*****************************************************
文件说明:GWME主入口,负责窗口,图形,事件的初始化 
版本号:3.0.0
开发时期:1999
作者:李林
修改记录:
******************************************************/

#include <eframe.h>
#include <bheap.h>
#include <edevice.h>
#include <eassert.h>
#include <eapisrv.h>
#include <epwin.h>
#include <gwmeobj.h>
#include <winsrv.h>
#include <gdisrv.h>
#include <touch.h>
#include "touchcal.h"


extern BOOL _InitialGdiObjMgr( void );
extern BOOL _InitialGdiIconCursorMgr( void );
extern void _DeInitialGdiIconCursorMgr( void );
extern void _DeInitialGdiObjMgr( void );

extern BOOL DeleteGdiObject( HANDLE hOwner );
extern BOOL DeleteDCObject( HANDLE hOwner );
extern void FreeInstanceCursor( HANDLE hOwner );
extern void FreeInstanceIcon( HANDLE hOwner );
extern BOOL _DeInitWindowManager( void );
extern void _DeInitialWndClassMgr( void );
extern void _DeInitialPaintRgn( void );
extern void _DeInitialRgn( void );
extern BOOL __InitialEventDriver(void);
extern BOOL _InitialRgn( void );
extern BOOL _InitiFont( void );
extern BOOL _InitScreen( void );
extern BOOL _ExitGraphic( void );
extern void _ReleaseEventDriver(void);
extern BOOL _InitStockObject( void );
extern BOOL _InitSysSetting( void );
extern BOOL _InitialGdi( void );
extern BOOL _InitialWndClassMgr( void );
extern BOOL _InitialPaintRgn( void );
extern BOOL _InitWindowManager( HINSTANCE hInst );
extern BOOL InstallMouseDevice( void );
extern BOOL _InitSysQueue( void );
extern BOOL _InitCaret( void );
extern void _DeInitialCaret( void );
extern void _DeInitialGdi( void );
extern void _DeInitSysColorBrush( void );
extern void _DeinitCalibration( void );
extern void _InitCalibration( void );

extern void InstallGwmeServer( void );

extern VOID FASTCALL _ClearProcessTimer( HANDLE hProcess );

//定义系统资源
/*
HANDLE hbmpClose; //标题栏上的关闭方框
HANDLE hbmpHelp; //标题栏上的帮助方框
HANDLE hbmpOk;	//标题栏上的确认方框
HANDLE hbmpGrayClose; //标题栏上的灰关闭方框
HANDLE hbmpGrayHelp;	//标题栏上的灰帮助方框
HANDLE hbmpGrayOk;//标题栏上的灰确认方框
HICON hicoSysMenu;//标题栏上的系统方框
HICON hicoGraySysMenu;//标题栏上的灰系统方框

*/
//
HANDLE hgwmeBlockHeap;//块堆
HANDLE hgwmeEvent = NULL;
HINSTANCE hgwmeInstance = NULL;
HANDLE hgwmeProcess = NULL;

//定义默认的显示面
_BITMAPDATA * lpDisplayBitmap;
HBITMAP hbmpDisplayBitmap;

//定义默认的显示驱动程序
_DISPLAYDRV * lpDrvDisplayDefault;

//定义默认的图形显示驱动界面入口-显示设备
_LPGWDI_ENTER lpGwdiDisplayEnter = NULL;

//定义默认的图形显示驱动界面入口-点设备
// pos driver , like mouse, touch...
_LPGWDI_ENTER lpGwdiPosEnter = NULL;

//定义默认的图形显示驱动界面入口-按键设备
// key driver
_LPGWDI_ENTER lpGwdiKeyEnter = NULL;
//

DWORD dwActiveTimerCount;	//最新的输入事件时间,被KEY Event and Mouse Event update
// **************************************************
// 声明:static BOOL InitGwmeBlockHeap( void )
// 参数:
// 	无
// 返回值:
//	进入成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	初始化块堆
// 引用: 
//	
// ************************************************
#define DEBUG_InitGwmeBlockHeap 0
static BOOL InitGwmeBlockHeap( void )
{
	UINT blockSize[] = { sizeof( _REGCLASS ), sizeof(_PROCESS_CLASS),
		                 sizeof(_WINDATA), sizeof(_MSGQUEUE), sizeof(GWEDATA), sizeof(_RECTNODE), 
						 sizeof(_RGNDATA), sizeof(_BITMAPDATA), sizeof(_BITMAP_DIB), sizeof(_FONT),
						 sizeof(_ICONDATA), sizeof(_BRUSHDATA), sizeof(_PENDATA), sizeof(_LINEDATA),
						 sizeof(_PIXELDATA), sizeof(_BLKBITBLT), sizeof(_DISPLAYDRV), sizeof(_FONTDRV),
						 128, 256, 512, 1024, 1024+128, 1024+256, 1024+512, 2048, 4096                     // for 可变的字串和位图准备 
	};

	hgwmeBlockHeap = BlockHeap_Create( blockSize, sizeof( blockSize ) / sizeof( UINT ) );
	if( hgwmeBlockHeap == NULL )
	{
		ERRORMSG( DEBUG_InitGwmeBlockHeap, ( "error in InitGwmeBlockHeap: __Init GWME BlockHeap failure!.\r\n" ) );
		
		return FALSE;
	}
	return TRUE;
}

// **************************************************
// 声明:static BOOL InstallGwmeObject( HINSTANCE hInst )
// 参数:
// 	IN hInst - 实例句柄
// 返回值:
//	进入成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	初始化图形对象管理器
// 引用: 
//	
// ************************************************
#define DEBUG_InstallGwmeObject 0
static BOOL InstallGwmeObject( HINSTANCE hInst )
{
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitialGdiObjMgr.\r\n" ) );
	if( _InitialGdiObjMgr() == FALSE )
		return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitialGdiIconCursorMgr.\r\n" ) );
	if( _InitialGdiIconCursorMgr() == FALSE )
		return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitStockObject\r\n" ) );
    if( _InitStockObject() == FALSE )
        return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitialGdi\r\n" ) );
    if( _InitialGdi() == FALSE )
        return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitSysSetting\r\n" ) );
	if( _InitSysSetting() == FALSE )
		return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "__InitialRgn\r\n" ) );
    if( _InitialRgn() == FALSE )
        return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitialPaintRgn\r\n" ) );
	if( _InitialPaintRgn() == FALSE )
		return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitialWndClassMgr\r\n" ) );
	if( _InitialWndClassMgr() == FALSE )
		return FALSE;
    //if( _InitialSystemWindowClass(hInst) == FALSE )
        //return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitWindowManager.\r\n" ) );
    if( _InitWindowManager( hInst ) == FALSE )
        return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitSysQueue.\r\n" ) );
    if( _InitSysQueue() == FALSE )
        return FALSE;
	DEBUGMSG( DEBUG_InstallGwmeObject, ( "_InitCaret.\r\n" ) );
    if( _InitCaret() == FALSE )
        return FALSE;
    DEBUGMSG( DEBUG_InstallGwmeObject, ( "InstallGWMEObject Finish\r\n" ) );
    return TRUE;
}

// **************************************************
// 声明:static BOOL InstallGwmeDevice( HINSTANCE hInst )
// 参数:
// 	IN hInst - 实例句柄
// 返回值:
//	进入成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	初始化图形设备界面
// 引用: 
//	
// ************************************************

extern BOOL CALLBACK HandlePosEvent( DWORD dwFlags, DWORD dx, DWORD dy, DWORD dwData, DWORD dwExtraInfo );
#define DEBUG_InstallGwmeDevice 0
static BOOL InstallGwmeDevice( HINSTANCE hInst )
{
	_InitDefaultGwdi(); //调用arch层的初始化函数

	if( lpGwdiDisplayEnter )	//是否有默认的显示设备 ?
	{	//是
	    DEBUGMSG( DEBUG_InstallGwmeDevice, ( "Init Display...\r\n" ) );
		if( lpGwdiDisplayEnter( GWDI_CREATE, 0, 0 ) )	//初始化成功?
		{	//是
			//得到默认的显示面			
		    lpGwdiDisplayEnter( GWDI_GET_BITMAP_PTR, 0, &lpDisplayBitmap );
			if( lpDisplayBitmap )
			    hbmpDisplayBitmap = PTR_TO_HANDLE(lpDisplayBitmap);
			else
				hbmpDisplayBitmap = NULL;

		    //得到默认的显示驱动程序
		    lpGwdiDisplayEnter( GWDI_GET_DISPLAY_PTR, 0, &lpDrvDisplayDefault );
		}
		else
			return FALSE;
	}

	if( lpGwdiPosEnter )	//是否有默认的点定位设备 ?
	{	//有
		DEBUGMSG( DEBUG_InstallGwmeDevice, ("Init Pos device...\r\n" ) );
		if( !lpGwdiPosEnter( GWDI_CREATE, 0, (LPVOID)HandlePosEvent ) )
			return FALSE;
	}

	if( lpGwdiKeyEnter )	//是否有默认的键盘设备 ?
	{	//是
		DEBUGMSG( DEBUG_InstallGwmeDevice, ( "Init key device...\r\n" ) );
		if( !lpGwdiKeyEnter( GWDI_CREATE, 0, 0 ) )
			return FALSE;
	}
	return TRUE;
}

// **************************************************
// 声明:BOOL OpenGwmeDevice( void )
// 参数:
// 	无
// 返回值:
//	进入成功,返回TRUE;否则,返回FALSE
// 功能描述:
//	打开图形设备
// 引用: 
//	
// ************************************************
#define DEBUG_OpenGwmeDevice 0
BOOL OpenGwmeDevice( void )
{
	DEBUGMSG( DEBUG_OpenGwmeDevice, ( "OpenGwmeDevice entry.\r\n" ) );	
	DEBUGMSG( DEBUG_OpenGwmeDevice, ( "OpenGwmeDevice open dislplay device.\r\n" ) );
	if( lpGwdiDisplayEnter )	//是否有默认的点定位设备 ?
	    lpGwdiDisplayEnter( GWDI_OPEN, 0, 0 ); // 打开
	DEBUGMSG( DEBUG_OpenGwmeDevice, ( "OpenGwmeDevice open pos device.\r\n" ) );
	if( lpGwdiPosEnter )	//是否有默认的点定位设备 ?
		lpGwdiPosEnter( GWDI_OPEN, 0, 0 );
    DEBUGMSG( DEBUG_OpenGwmeDevice, ( "OpenGwmeDevice open key device.\r\n" ) );
	if( lpGwdiKeyEnter )	//是否有默认的键盘设备 ?
		lpGwdiKeyEnter( GWDI_OPEN, 0, 0 );//打开
	DEBUGMSG( DEBUG_OpenGwmeDevice, ( "OpenGwmeDevice leave.\r\n" ) );		
	return TRUE;
}


// **************************************************
// 声明:static void ReleaseGwme( void )
// 参数:
//    无
// 返回值:
//	无
// 功能描述:
//	卸下gwme	
// 引用: 
//	
// ************************************************

static void ReleaseGwme( void )
{
	_DeinitCalibration();
	_DeInitialCaret();
	_DeInitialGdi();
	_DeInitSysColorBrush();
	_DeInitialRgn();
	_DeInitialPaintRgn();
	_DeInitialWndClassMgr();
    _DeInitWindowManager();

	if( lpGwdiDisplayEnter )
	{
		lpGwdiDisplayEnter( GWDI_CLOSE, 0, 0 );
		lpGwdiDisplayEnter( GWDI_DESTROY, 0, 0 );
	}	
	if( lpGwdiPosEnter )
	{
		lpGwdiPosEnter( GWDI_CLOSE, 0, 0 );
		lpGwdiPosEnter( GWDI_DESTROY, 0, 0 );
	}
	if( lpGwdiKeyEnter )
	{
		lpGwdiKeyEnter( GWDI_CLOSE, 0, 0 );
		lpGwdiKeyEnter( GWDI_DESTROY, 0, 0 );
	}
	_DeInitialGdiIconCursorMgr();
	_DeInitialGdiObjMgr();
}

// **************************************************
// 声明:void WINAPI WinSys_CloseObject( HANDLE hProcess )
// 参数:
//    IN hProcess - 进程句柄
// 返回值:
//	无
// 功能描述:
//	释放所有属于进程hProcess的资源
// 引用: 
//	
// ************************************************

void WINAPI WinSys_CloseObject( HANDLE hProcess )
{
	if( !API_IsReady( API_GWE ) )
		return;

	DeleteDCObject( hProcess );
	FreeInstanceIcon( hProcess );
	FreeInstanceCursor( hProcess );
	DeleteGdiObject( hProcess );
	//FreeInstanceMenu( hProcess );
}

static HWND hWndCalibrate = NULL;

⌨️ 快捷键说明

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