base.h

来自「好记星的控件,包括button,list,对文件操作」· C头文件 代码 · 共 454 行 · 第 1/2 页

H
454
字号
/****************************************************************************/
/*                                                                          */
/*              Copyright (C) 2005 SHENZHEN MEIJIN CO.LTD                   */
/*                                                                          */
/* FILE NAME:   OsBase.h                                                    */
/* MODULE NAME:                                                             */
/* DESCRIPTION: 本文件主要声明基本的数据类型和宏                            */
/*                                                                          */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   谢永良     2005-03-18      创建                                        */
/****************************************************************************/

/* 防止头文件被重复引用所作的判断 */
#ifndef __BASE_H__
#define __BASE_H__

/* 包含Nucleus基本头文件 */
#include "plus/nucleus.h"


#ifdef  __cplusplus
extern  "C" {       /* C declarations in C++ */
#endif

// Nucleus没有定义的基本数据类型
typedef unsigned int    UINT;
typedef int             BOOL;
#ifdef _WIN32
typedef unsigned char   BYTE;
typedef unsigned short  WORD;
#endif

/* 扩展数据类型定义 */
typedef volatile unsigned char  V_UINT8;
typedef volatile unsigned short V_UINT16;
typedef volatile unsigned long  V_UINT32;

//===============dennyhan added this for 33L05==============
#ifndef _WIN32
typedef volatile char					V_INT8;
//typedef volatile unsigned char			V_UINT8;
typedef volatile signed short			V_INT16;
//typedef volatile unsigned short			V_UINT16;
typedef volatile long					V_INT32;
//typedef volatile unsigned long			V_UINT32;
#endif
//===========end of dennyhan adding==============




typedef int             HFILE;      /*打开文件的句柄*/
typedef void*           HTIMER;     /*定时时钟句柄*/
typedef UINT16*         HCOMM;
typedef void            (*FPCALLBACK)();        /* 通用回调函数 */
#ifndef IRQFUNC
typedef void            (*IRQFUNC)(INT Param);  /* 中断回调函数 */
#endif
typedef void*           HGUI;       /*GUI句柄类型*/

// 常数定义
#define TRUE            1
#define FALSE           0


/* 下面包含标准库函数头文件 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define		USER_STR_EN			1

#ifdef		USER_STR_EN
// 不区分大小写比较字符串的大小
INT  stricmp( const CHAR *pStr1, const CHAR *pStr2);
// 不区分大小写按指定最大长度比较字符串的大小
INT  strnicmp( const CHAR *pStr1, const CHAR *pStr2, UINT uLen );
// 不区分大小按长度比较内存数据
INT  memicmp( const VOID *pBuffer1, const VOID *pBuffer2, UINT uLen );
// 判断点是否落在指定的矩形框内
BOOL DotInArea(INT px, INT py, INT x, INT y, INT width, INT height);
#endif


/* 基本数据分离和结合操作宏定义 */
#define LOBYTE(w)           ((UINT8)(w))
#define HIBYTE(w)           ((UINT8)(((UINT16)(w) >> 8) & 0xFF))
#define MAKEWORD(lo, hi)    (((UINT16)((UINT8)(hi))<<8) + (UINT16)((UINT8)(lo)))
#define LOWORD(dw)          ((UINT16)(dw))
#define HIWORD(dw)          ((UINT16)(((UINT32)(dw) >> 16) & 0xFFFF))
#define MAKELONG(lo, hi)    (((UINT32)((UINT16)(hi))<<16) + (UINT32)((UINT16)(lo)))


/* 下面的宏用于解决奇地址读写出错的问题 */
#define READ_WORD(ptr)          MAKEWORD((*(UINT8*)(ptr)), (*((UINT8*)(ptr)+1)))
                                /*得到一个16的数*/
#define READ_DWORD(ptr)         MAKELONG(READ_WORD((UINT8*)(ptr)), \
                                          READ_WORD(((UINT8*)(ptr)+2)))

                                /*得到一个32的数*/
#define WRITE_WORD(ptr, w)      do{ *(UINT8*)(ptr) = LOBYTE(w); \
                                    *((UINT8*)(ptr)+1) = HIBYTE(w); }while(0)
                                /*向某地址中写入一个16的数*/
#define WRITE_DWORD(ptr, dw)    do{ WRITE_WORD((ptr), LOWORD(dw));  \
                                    WRITE_WORD((UINT8*)(ptr)+2, HIWORD(dw)); }while(0)
                                /*向某地址中写入一个32的数*/

/* ID号操作相关宏
   这里需要根据不同的硬件选用不同的方式定义 最好选择当高16位为FFFF时表示ID号 */
/* 如果选高16位为“0000”表示ID号 在CPU不会选用前64K空间作为地址时可以使用 */
#define MAKE_ID(id)     (UINT8*)(0xFFFF0000 | (UINT32)(id) )
#define IS_ID(ptr)      (((UINT32)(ptr) & 0xFFFF0000) == 0xFFFF0000)
#define GET_ID(ptr)     ((UINT16)((UINT32)ptr))


/*下面的宏用于取得笔点消息的X,Y坐标*/
/*uParam为笔点消息的uParam成员*/
#define GET_PEN_X(uParam)	((UINT16)(uParam&0xffff))
#define GET_PEN_Y(uParam)	((UINT16)((uParam>>16)&0xffff))

// 系统事件定义
#define EVENT_NOTHING       0
#define EVENT_INITIALIZE    0x00000001      // AP控件初始化事件
#define EVENT_EXIT          0x00000002      // AP控件退出事件(询问AP是否可以退出)
#define EVENT_DESTROY       0x00000004      // AP控件销毁事件
#define EVENT_DRAW          0x00000010      // AP控件显示事件
#define EVENT_TIMER         0x00000020      // 定时事件
#define EVENT_COMMAND       0x00000040      // 命令事件
//-----------------------
#define EVENT_KEY           0x00000100      // 按键事件
#define EVENT_KEYREPEAT     0x00000200      // 按键重复事件
#define EVENT_KEYUP         0x00000400      // Key up for key, NOT used
#define	EVTKB_SHIFT_MASK	0x00010000		// Must > 65535,
//#define	EVTKB_CAPS_MASK		0x00020000		// Must > 65535,	// No used by now
											// Only used for KeyDriver: sub message of
											//  EVENT_KEY /EVENT_KEYREPEAT /EVENT_KEYUP
											// but shift and caps are excluded
#define	MASKSET_KBSHIFT(a)		(EVTKB_SHIFT_MASK|a)
#define	MASKCLR_KBSHIFT(a)		((~EVTKB_SHIFT_MASK)&a)

#define	READKB_SHIFTMASK(a)		(EVTKB_SHIFT_MASK&a)
#define	READKB_VALUE(a)			((~EVTKB_SHIFT_MASK)&a)
//-----------------------

#define EVENT_CHAR          0x00000800      // 字符事件
#define EVENT_PENDOWN       0x00001000      // 笔触屏幕事件
#define EVENT_PENMOVE       0x00002000      // 笔在屏幕上移动事件
#define EVENT_PENUP         0x00004000      // 笔离开屏幕事件

#define EVENT_IME           0x00008000      // IME Specially EVENT
#define EVENT_IMESTR        0x00010000      // IME EVENT

#define EVENT_UDISK         0x01000000      // 进入U盘事件
#define EVENT_VOICE         0x02000000      // 语音处理相关事件
#define EVENT_ALARM         0x04000000      // 报时
#define EVENT_BEEP          0x08000000      // Beep Sound

#define EVENT_CMDEXP        0x00020000      // Expand command

typedef struct tagEXPCMD{
	UINT16	wCmdType;
	VOID	*pCmdExp;
}tfsEXPCMD,CMDEXP,*PCMDEXP;

#define	EVENT_CMDEXP_IME		1			// IME expand CMD
#define	EVENT_CMDEXP_LST		2			// List expand CMD
#define	EVENT_CMDEXP_EDT		3			// Edit expand CMD
#define	EVENT_CMDEXP_BWR		4			// browser expand CMD
#define	EVENT_CMDEXP_USER		5			// User expand CMD
#define  EVENT_BUTTONDOWN   6

//注: AP或控件处理事件的返回值说明:返回0表示没有处理,返回其它值表示已经处理此事件;


// 系统命令消息
#define CM_KNLCOM_BASE      0x1000
#define CM_KNLCOM_SZIE      0x0100
#define CM_SDCARD_INSERT    (CM_KNLCOM_BASE+0)      // SD卡插入通知消息
#define CM_SDCARD_PULLOUT   (CM_KNLCOM_BASE+1)      // SD卡拔出通知消息

///#define CM_MSGBOX_INSERT    (CM_KNLCOM_BASE+2)      // 提示框进入
#define CM_MSGBOX_RTNRQ     (CM_KNLCOM_BASE+3)      // 要求提示框退出, Special for Msgbox
#define CM_MSGBOX_RTN		(CM_KNLCOM_BASE+4)      // 提示框退出

// For volume
#define CM_VOLUME_CHANGED	(CM_KNLCOM_BASE+7)      // 音量加减
#define CM_VOLUME_MUTE		(CM_KNLCOM_BASE+8)      // 音量静音通知
#define CM_VOLUME_RESTORE	(CM_KNLCOM_BASE+9)      // 音量恢复通知

#define CM_SYSTIME_TICK		(CM_KNLCOM_BASE+10)      //系统TICK变更通知

#define	CM_ALARM_RTNRQ		(CM_KNLCOM_BASE+11)      //系统Alarm Exit
#define	CM_RING_RTNRQ		(CM_KNLCOM_BASE+12)      //系统Power On Ring Exit

#define	CM_LCDLIGHT_RQ		(CM_KNLCOM_BASE+13)      //系统调节LCD 亮度,进入。 
#define	CM_LCDLIGHT_RTNRQ   (CM_KNLCOM_BASE+14)      //系统调节LCD 亮度,退出。

#define RINGON_INT_RTN      (CM_KNLCOM_BASE+15)      //Alarm Interrupt Return

#define CM_KNLIME_BASE      (CM_KNLCOM_BASE+CM_KNLCOM_SZIE)      // IME Command Base
#define CM_KNLIME_SIZE      0x0100      // IME Command Size

#define CM_KNLBTN_BASE      (CM_KNLIME_BASE+CM_KNLIME_SIZE)      // BUTTON Command Base
#define CM_KNLBTN_SIZE      0x0100      // BUTTON Command Size

#define CM_KNLLST_BASE      (CM_KNLBTN_BASE+CM_KNLBTN_SIZE)      // List Command Base
#define CM_KNLLST_SIZE      0x0100      // List Command Size

#define CM_KNLEDT_BASE      (CM_KNLLST_BASE+CM_KNLLST_SIZE)      // Edit Command Base
#define CM_KNLEDT_SIZE      0x0100      // Edit Command Size

#define CM_KNLBWR_BASE      (CM_KNLEDT_BASE+CM_KNLEDT_SIZE)      // Edit Command Base
#define CM_KNLBWR_SIZE      0x0100      // Edit Command Size

#define CM_USER             (CM_KNLBWR_BASE+CM_KNLBWR_SIZE)

/* 虚键键值定义 */
// DennyHan changed the following: starting for keybddrv
// Key_CMD: For message for
// 虚键键值定义

#define MVK_BACKSPACE   0x08    // Back退格键
//#define MVK_INSERT      0x09    // Insert插入键
#define MVK_DELETE      MVK_BACKSPACE//0x0A    // Delete删除键

⌨️ 快捷键说明

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