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 + -
显示快捷键?