?? uisw_kbd.h
字號:
/*********************************************************************/
// 文 件 名: uiSw_Kbd.h
// 程序說明: 鍵盤管理和鍵盤控件
// 程序設(shè)計(jì): 黨德華
// 2001.10.26 設(shè)計(jì)完成 說明文檔:R004-S211-0001
// 宋軍霞 2002.02.02 增加鍵盤復(fù)位功能
// 宋軍霞 2002.06.07 更正鍵盤控件結(jié)構(gòu)中候選字存儲區(qū)不對齊的問題
// 程序?qū)彶椋?宋軍霞
// 2002.01.22 審查完成 說明文檔:R004-S211-0001
// 項(xiàng)目編號: R004-S211
// 版 本: V1.0
// 版 權(quán): Reality Plus Technology (ShenZhen) Co.,Ltd.
/*********************************************************************/
#ifndef _GUI_SWKBD_H
#define _GUI_SWKBD_H
#include <pr2k.h>
#include <typedefine.h>
#include <uiControl.h>
// 特殊按鍵
#define KEY_BACKSPACE 0x0008 // 退格鍵
#define KEY_SPACE 0x0020 // 空格鍵
#define KEY_TAB 0x0009 // 制表鍵
#define KEY_ENTER 0x000D // 回車鍵
#define KEY_DELETE 0x0006 // 刪除鍵
/* ============================================================================ */
// 系統(tǒng)鍵盤管理
/* ============================================================================ */
// 鍵盤輸入信息的添加方式
#define INPUT_MODE_ADD 0 // 添加到光標(biāo)所在位置
#define INPUT_MODE_REPLACE_1 1 // 替換光標(biāo)前的第一個(gè)字符
#define INPUT_MODE_REPLACE_2 2 // 替換光標(biāo)前的第二個(gè)字符
//各個(gè)鍵盤處理的回調(diào)函數(shù)
typedef void (*PF_KBD_ACTION)(HNDL handle,WORD message,WORD x,WORD y);
typedef void (*PF_KBD_START)(HNDL handle);
typedef void (*PF_KBD_END)(HNDL handle);
typedef void (*PF_KBD_SHOW)(HNDL handle,int region,WORD *buffer);
// 鍵盤信息數(shù)據(jù)結(jié)構(gòu)
#define SWKBD_MAX_NAME_SIZE 16 // 鍵盤名稱最大字符數(shù)
#define GUI_KBDINFO_CHECK_FLAG 8221 // 鍵盤有效檢查標(biāo)志
typedef struct tagKbd_Info
{
BYTE bClass; // 鍵盤類型,如中、英等
char szName[SWKBD_MAX_NAME_SIZE+1]; // 鍵盤名稱,如“拼音”、“五筆”等
short checkFlag; // 鍵盤有效性檢查標(biāo)志
BYTE *paBmp; // 鍵盤圖片數(shù)據(jù)指針
PF_KBD_ACTION actionFun; // 回調(diào)函數(shù):消息響應(yīng)
PF_KBD_START startFun;
PF_KBD_END endFun;
PF_KBD_SHOW showFun;
}TKbd_Info;
// 引用外部的全局變量
extern const WORD gGUI_MAX_KBD; // 最大可安裝鍵盤數(shù),在uiUser_Kbd.cpp中定義
extern TKbd_Info *gpKbd_Info; // 鍵盤信息,在uiSw_Kbd.cpp中定義
// 初始化鍵盤信息
DLL_EXP(STATUS) guiKbd_Init(void);
// 增加一個(gè)新鍵盤
DLL_EXP(STATUS) guiKbd_Add(TKbd_Info *pKbd_Info);
// 獲取下一個(gè)有效鍵盤的編號
DLL_EXP(STATUS) guiKbd_GetNext(WORD oldType, WORD *newType);
// 獲取與當(dāng)前鍵盤類型相同的下一個(gè)有效鍵盤的編號
DLL_EXP(STATUS) guiKbd_GetNextInType(WORD oldType, WORD *newType);
//獲取鍵盤的大小
DLL_EXP(STATUS) guiKbd_GetSize(WORD type, WORD *width, WORD *height);
//獲取鍵盤名稱
DLL_EXP(STATUS) guiKbd_GetName(WORD type,char *name);
//獲取已安裝的鍵盤數(shù)
DLL_EXP(WORD) guiKbd_GetNum(void);
// 將鍵盤上的輸入信息發(fā)送到GUI系統(tǒng)
DLL_EXP(void) guiKbd_SendMsg(HNDL handle,short sendCode,BYTE mode);
// 獲取某一類鍵盤中的一個(gè)有效鍵盤的編號
DLL_EXP(STATUS) guiKbd_GetType(BYTE bClass, WORD *type);
// 獲取鍵盤的類型
DLL_EXP(STATUS) guiKbd_GetClass(WORD type, BYTE *bClass);
// 檢查鍵盤編號的合法性
DLL_EXP(STATUS) guiKbd_CheckType(WORD type);
// 獲取鍵盤位置指針
DLL_EXP(STATUS) guiKbd_GetBmp(WORD type,int *paBmp);
/* ============================================================================ */
// 鍵盤控件
/* ============================================================================ */
// 鍵盤控件數(shù)據(jù)結(jié)構(gòu)
#define MAX_INPUT_STR_NUM 7 // 中文輸入法中的最大輸入字符數(shù)
#define HWR_MAXCHAR_NUM 20 // 手寫識別中的最大候選字?jǐn)?shù)
typedef struct tagGuiSw_Kbd // 108 Bytes
{
TGuiControl base; //基本屬性
char InputStr[MAX_INPUT_STR_NUM+1]; //保存輸入的字符串
DWORD Offset; //重碼字開始位置
WORD TotalNum; //重碼字個(gè)數(shù)
WORD StartPos; //顯示區(qū)中字符在重碼字中的相對位置
int SelPos; //擴(kuò)展屬性,可作為一個(gè)變量使用
WORD HWR_Buf1_Num; //手寫1區(qū)域候選字個(gè)數(shù)
WORD HWR_Buf2_Num; //手寫2區(qū)域候選字個(gè)數(shù)
WORD HWR_Buf3_Num; //手寫3區(qū)域候選字個(gè)數(shù)
char HWR_Buf1[HWR_MAXCHAR_NUM+2]; //手寫1區(qū)域候選字
char HWR_Buf2[HWR_MAXCHAR_NUM+2]; //手寫2區(qū)域候選字
char HWR_Buf3[HWR_MAXCHAR_NUM+2]; //手寫3區(qū)域候選字
char First_Stroke1;
char First_Stroke2;
char First_Stroke3;
}TGuiSw_Kbd;
typedef struct tagSwKbd_Coor
{
WORD left; // 座標(biāo)
WORD top;
WORD right;
WORD bottom;
WORD code; //代碼
}TSwKbd_Coor;
#define KEY_KBD_END 0x0ffff // 鍵盤座標(biāo)和代碼信息結(jié)束碼
// 創(chuàng)建一個(gè)鍵盤控件
DLL_EXP(HNDL) guiSwKbd_Create(WORD left, WORD top, WORD Type);
// 切換到下一個(gè)有效鍵盤
DLL_EXP(STATUS) guiSwKbd_SwitchToNext(HNDL handle);
// 切換到與當(dāng)前鍵盤類型相同的下一個(gè)有效鍵盤
DLL_EXP(STATUS) guiSwKbd_SwitchToNextInType(HNDL handle);
// 切換到另一類型的鍵盤
DLL_EXP(STATUS) guiSwKbd_SwitchClass(HNDL handle, BYTE bClass);
// 設(shè)定當(dāng)前鍵盤為指定的鍵盤
DLL_EXP(STATUS) guiSwKbd_SetType(HNDL handle, WORD type);
// 獲取鍵盤當(dāng)前的鍵盤類型和編號
DLL_EXP(STATUS) guiSwKbd_GetType(HNDL handle, BYTE *bClass ,WORD *type);
// 搜索筆點(diǎn)的鍵盤位置
DLL_EXP(int) guiSwKbd_SearchPos(TSwKbd_Coor const *tSwKbd_Coor, WORD x, WORD y);
// 復(fù)位窗口中的鍵盤
DLL_EXP(void) guiSwKbd_Reset(HNDL handle);
/* ============================================================================ */
// 用戶鍵盤管理
/* ============================================================================ */
// 用戶鍵盤分類,類型碼必須為BYTE類型
#define KBDCLASS_ENGLISH 0
#define KBDCLASS_CHINESE 1
#define KBDCLASS_SYMBOL 2
#define KBDCLASS_HAND 3
#define KBDCLASS_NUMERIC 4
#define KBDCLASS_CHT 5
// 用戶鍵盤常數(shù),常數(shù)的數(shù)值必須與鍵盤加入的序號相對應(yīng)
#define KBD_HAND 0 // 手寫
#define KBD_ENGLISH 1 // 英文小寫
#define KBD_ENGLISH_CAP 2 // 英文大寫
#define KBD_CHINESE_PY 3 // 中文拼音
#define KBD_CHINESE_WB 4 // 中文五筆
#define KBD_CHINESE_MAKEWORD 5 // 簡體造字
#define KBD_CHT_ZY 6 // 符號
#define KBD_CHT_CJ 7 // 符號
#define KBD_CHT_MAKEWORD 8 // 繁體造字
#define KBD_SYMBOL 9 // 符號
//#define KBD_NUMERIC 8 // 數(shù)字
// 定義用戶鍵盤中的幾個(gè)特殊功能鍵
#define KEY_CHINESE 0x0300 // 切換(到)中文鍵盤
#define KEY_ENGLISH 0x0301 // 切換(到)英文鍵盤
#define KEY_SYMBOL 0x0302 // 切換(到)符號鍵盤
#define KEY_HAND 0x0303 // 切換(到)手寫鍵盤
#define KEY_IMECODE 0x0304 // 拼音或五筆編碼輸入?yún)^(qū)
#define KEY_CANDIDATE 0x0305 // 候選區(qū)
#define KEY_CANDIDATE2 0x0306 // 第2個(gè)候選區(qū)
#define KEY_LEFT 0x0307 // 左箭頭
#define KEY_RIGHT 0x0308 // 右箭頭
#define KEY_CAPSLOCK 0x0309 // 大寫/小寫或拼音/五筆切換
#define KEY_HANDREGION 0x030A // 手寫區(qū)
#define KEY_NUMERIC 0x030B // 切換(到)數(shù)字鍵盤
//#define KEY_MAKEWORD 0x030C // 造字鍵盤切換(到)
#define KEY_SWITCHMKWORD 0x030D // 造字鍵盤切換(到)
#define CJ_KEY_BACKSPACE 0x0400
#define CJ_KEY_DELETE 0x0401
#define CJ_KEY_ENTER 0x0402
#define CJ_KEY_SPACE 0x0403
// 用戶鍵盤初始化,本函數(shù)為GUI系統(tǒng)的回調(diào)函數(shù),用戶不可以刪除它,但可以根據(jù)規(guī)則來修改它的內(nèi)容
STATUS guiKbd_UserInit(void);
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -