283 lines
8.6 KiB
C
283 lines
8.6 KiB
C
|
||
/*************************************************
|
||
* abcsda.h *
|
||
* *
|
||
* Copyright (C) 1995-1999 Microsoft Inc. *
|
||
* *
|
||
*************************************************/
|
||
|
||
|
||
#define CHR 1
|
||
#define SDA_NUMBER 2
|
||
#define SDA_DELETE 3
|
||
#define CAP_CHR 4
|
||
#define FUC_CHR 5
|
||
#define SPACE 6
|
||
#define ESCAPE 7
|
||
#define DK_SUB 0x2d // "-"seperator
|
||
#define DK_FANX 0x5c // "\"
|
||
#define DK_ZHENGX 0x2f // "/"
|
||
#define DK_LP 0x60
|
||
#define DK_RP 0x27 // " ' " seperator
|
||
#define CURSOR 8
|
||
#define ZH 1
|
||
#define SH 2
|
||
#define VH 3
|
||
#define S 2
|
||
|
||
#define FIRST_KEY_TOP 4//10
|
||
#define FIRST_KEY_LEFT 5//10
|
||
#define KEY_WIDTH 24//25//20//32 //35
|
||
#define KEY_HIGH 28//7
|
||
#define KEY_GAP -1//0
|
||
#define INC 3
|
||
|
||
#define KEYBOARD_W 546
|
||
#define KEYBOARD_H 128 //135
|
||
|
||
BYTE current_flag=0;
|
||
BYTE current_number=0;
|
||
BYTE rule_pointer=0;
|
||
BYTE input_sum=0;
|
||
|
||
BYTE sound_cvt_table_index[]="AEVO\0";
|
||
BYTE sound_cvt_table_value[]={ZH,VH,SH,DK_RP};
|
||
|
||
RECT Rect;
|
||
RECT here;
|
||
RECT Base_key;
|
||
RECT Special_key;
|
||
RECT Middle_key;
|
||
RECT rectMax; //Mouse move validate area.
|
||
|
||
|
||
HANDLE old_brush;
|
||
HANDLE front_brush;
|
||
HANDLE old_pen;
|
||
HPEN pen;
|
||
HFONT T_font,B_font,S_font;
|
||
|
||
HWND hW, hSdaKeyBWnd;
|
||
HWND Re;
|
||
FARPROC FAR *lp;
|
||
HCURSOR Hand_Cursor;
|
||
LPRECT win_size;
|
||
BYTE Sd_Open;
|
||
|
||
unsigned char key_array[]={8,12,11,10};
|
||
int f_key[5]={24,36,42,60};
|
||
|
||
BYTE Sheng_Mu[]="AEVO\0";
|
||
BYTE Sheng_Tishi[34][5]={"Q ",
|
||
"W ",
|
||
"CH ",
|
||
"R ",
|
||
"T ",
|
||
"Y ",
|
||
"U ",
|
||
"I ",
|
||
"' ",
|
||
"P ",
|
||
" ",
|
||
" ",
|
||
//"\\ ",
|
||
"ZH ",
|
||
"S ",
|
||
"D ",
|
||
"F ",
|
||
"G ",
|
||
"H ",
|
||
"J ",
|
||
"K ",
|
||
"L ",
|
||
" ",
|
||
" ",
|
||
"Z ",
|
||
"X ",
|
||
"C ",
|
||
"SH ",
|
||
"B ",
|
||
"N ",
|
||
"M ",
|
||
" ",
|
||
" ",
|
||
" "};
|
||
|
||
|
||
//BYTE Sheng_Tishi[]="ZHCHSH' \0";
|
||
BYTE bx_tishi[]="һ<EFBFBD><EFBFBD>دؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD>"
|
||
"\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20";
|
||
BYTE jianpan[]="`1234567890"
|
||
"\x2d"
|
||
"=\x5c";
|
||
BYTE left_key[]="Esc "
|
||
"Tab "
|
||
"Caps "
|
||
"Shift";
|
||
BYTE left_key_cnt[]={3,3,4,5};
|
||
BYTE right_key[]="Back "
|
||
"Enter"
|
||
"Space"
|
||
"Ctrl+'-'";
|
||
BYTE right_key_cnt[]={4,5,5,8};
|
||
|
||
BYTE Key_Pos_Array[]={0xc,0x1b,0x19,0xe,0x2,0xf,0x10,0x11,0x7,0x12,
|
||
0x13,0x14,0x1d,0x1c,0x8,0x9,0x0,0x3,0xd,
|
||
0x4,0x6,0x1a,0x1,0x18,0x5,0x17};
|
||
BYTE Key_Exc_Value[34*4]={0};
|
||
BYTE Key_Real_Value[33]="QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,./";
|
||
|
||
|
||
BYTE unused [40];
|
||
BYTE index;
|
||
|
||
LPWORD sda_out;
|
||
|
||
FARPROC FAR *lp;
|
||
HWND Re;
|
||
|
||
int PointFlag=0;
|
||
WORD NowFocus;
|
||
RECT Push_b;
|
||
int disp_mark = 1;
|
||
|
||
|
||
BYTE xxxx[40]={0};
|
||
|
||
extern BYTE slbl_tab[];
|
||
/* Because this var is defined already in abcw2.h, do not duplicate definition
|
||
to avoid build warning
|
||
="ZH00\1"
|
||
"SH00\2"
|
||
"CH00\3"
|
||
"ING0\4"
|
||
"AI00\5"
|
||
"AN00\6"
|
||
"ANG0\7"
|
||
"AO00\x8"
|
||
"EI00\x9"
|
||
"EN00\xa"
|
||
"ENG0\xb"
|
||
"IA00\xc"
|
||
"IAN0\xd"
|
||
"IANG\xe"
|
||
"IAO0\xf"
|
||
"IE00\x10"
|
||
"IN00\x11"
|
||
"IU00\x12"
|
||
"ONG0\x13"
|
||
"OU00\x14"
|
||
"UA00\x15"
|
||
"UAI0\x16"
|
||
"UAN0\x17"
|
||
"UE00\x18"
|
||
"UN00\x19"
|
||
"UENG\x1a" //SC4K6c?*DBASE={<I5D1AH
|
||
"UI00\x1b"
|
||
"UO00\x1c"
|
||
"UANG\x1d"
|
||
"ER00\x1e"
|
||
"IONG\x1f"
|
||
"VE00\x18"
|
||
"UEN0\x19"
|
||
"VEN0\x19"
|
||
"UEI0\x1b"
|
||
"IOU0\x12"; */
|
||
|
||
BYTE sy_tab1[]={'A',0, //a
|
||
20,0, //b=ou
|
||
17,22, //c=in
|
||
21,12, //d=ua,ia 1993.2.1
|
||
'E',0, //e="E"
|
||
10,0, //f=en
|
||
11,0, //g=eng
|
||
7,0, //h=ang
|
||
'I',0, //i=i
|
||
6,0, //j=an
|
||
8,0, //k=ao
|
||
5,0, //l=ai
|
||
24,27, //m=ue,ui
|
||
25,'N', //n=un,"N'
|
||
'O',28, //o='O'
|
||
23,23, //p=uan,uan
|
||
9,0, //Q=ei
|
||
18,30, //R=ui,er
|
||
31,19, //s=iong,ong
|
||
29,14, //t=uang,iang
|
||
'U',0, //u="U"
|
||
'V',0, //Q="V"
|
||
13,0, //w=ian
|
||
16,0, //k=ie
|
||
4,0, //g=ing
|
||
15,0}; //z=iao
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////
|
||
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
|
||
///////////////////////////////////////////////////////////////////////
|
||
BYTE sy_tab_base[]={
|
||
1,1,S,1,1,1,1,1,1,1,1,1,S,1,S,S,1,0,S,1,1,0,0,0,0,0, //FK_A
|
||
1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,1,0,1,1,1,1, //FK_B
|
||
1,1,0,0,1,1,1,1,1,1,1,1,S,1,S,1,1,0,S,0,1,0,0,0,0,0, //FK_C
|
||
1,1,0,S,1,1,1,1,1,1,1,1,S,1,S,S,1,1,S,0,1,0,1,1,1,1, //FK_D
|
||
1,1,S,0,1,1,1,1,1,1,1,1,S,1,S,S,0,0,S,1,1,0,0,0,0,0, //FK_E
|
||
1,1,0,0,0,1,1,1,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1, //FK_F
|
||
1,1,S,1,1,1,1,1,0,1,1,1,S,1,S,S,1,0,S,1,1,0,0,0,0,0, //FK_G
|
||
1,1,S,1,1,1,1,1,0,1,1,1,S,1,S,S,1,0,S,1,1,0,0,0,0,0, //FK_H
|
||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //FK_I
|
||
0,0,1,S,0,0,0,0,1,0,0,0,1,1,0,1,0,1,1,S,0,1,1,1,1,1, //FK_J
|
||
1,1,S,1,1,1,1,1,0,1,1,1,S,1,S,S,1,0,S,1,1,0,0,0,0,0, //FK_K
|
||
1,1,1,S,1,0,1,1,1,1,1,1,1,1,S,S,1,1,S,S,1,1,1,1,1,1, //FK_L
|
||
1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1, //FK_M
|
||
1,1,1,0,1,1,1,1,1,1,1,1,1,1,S,S,1,1,S,S,1,1,1,1,1,1, //FK_N
|
||
1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,0,1,S,0,0,0,0,0,0,0,0, //FK_O
|
||
1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,1,0,1,1,1,1, //FK_P
|
||
0,0,1,S,0,0,0,0,1,0,0,0,1,1,0,1,0,1,1,S,1,1,1,1,1,1, //FK_Q
|
||
0,1,0,1,1,1,1,1,1,1,1,0,S,1,S,S,0,0,S,0,1,0,0,0,0,0, //FK_R
|
||
1,1,0,0,1,1,1,1,1,1,1,1,S,1,S,S,0,0,S,0,1,0,0,0,0,0, //FK_S
|
||
1,1,0,0,1,0,1,1,1,1,1,1,S,1,S,S,1,0,S,0,1,0,1,1,1,1, //FK_T
|
||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //FK_U
|
||
1,1,S,1,1,1,1,1,1,1,1,1,S,1,S,S,1,S,0,1,1,0,0,0,0,0, //FK_V
|
||
1,0,0,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0, //FK_W
|
||
0,0,1,S,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,S,0,1,1,1,1,1, //FK_X
|
||
1,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,0,0,S,0,1,0,0,0,1,0, //FK_Y
|
||
1,1,0,0,1,1,1,1,1,1,1,1,S,1,S,S,1,0,S,0,1,0,0,0,0,0}; //FK_Z
|
||
///////////////////////////////////////////////////////////////////////
|
||
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
|
||
///////////////////////////////////////////////////////////////////////
|
||
|
||
struct RULE{
|
||
BYTE length;
|
||
BYTE type;
|
||
WORD chr;
|
||
}rule_buf[30];
|
||
|
||
|
||
|
||
int WINAPI DebugShow( LPSTR msg1, int msg2);
|
||
|
||
int FAR PASCAL sda_proc(WORD, LPWORD, BYTE, HIMC);
|
||
void WINAPI sda_ts(HIMC, UINT, WPARAM, LPARAM);
|
||
int FAR PASCAL tran_data(int, HIMC, BYTE);
|
||
int FAR PASCAL tran_data2(int);
|
||
LONG FAR PASCAL Diaman(HWND,unsigned int,WORD,LONG);
|
||
|
||
int WINAPI chr_type(WORD);
|
||
BOOL WINAPI yuan_or_fu(WORD);
|
||
BOOL WINAPI fill_rule(WORD);
|
||
BOOL WINAPI match_and_find(WORD);
|
||
BOOL WINAPI match_and_find_0(WORD);
|
||
BOOL WINAPI match_and_find_1(WORD);
|
||
BOOL WINAPI got_py(WORD);
|
||
BOOL WINAPI find_tishi_pp(WORD);
|
||
void WINAPI disp_tishi(HIMC hIMC, int mark);
|
||
void WINAPI get_rect_base();
|
||
BOOL WINAPI get_rect_left(BYTE);
|
||
BOOL WINAPI get_rect_right(BYTE);
|
||
BOOL WINAPI get_rect_mid(BYTE);
|
||
void WINAPI paint_key(HDC hDC);
|
||
void WINAPI paint_key2(HDC hDC);
|
||
void WINAPI paint_first_line(HDC hDC);
|
||
void WINAPI paint_mid_key(HDC hDC);
|
||
|