📄 uikbd_symbol.c
字号:
#include <uiWnd.h>
#include <uiKbd_Symbol.h>
#include <uiKbd_Symbol.res>
#include <uiSound.h>
TSwKbd_Coor *KBDCOOR_SYMBOL;
// 反显按键
#define KBD_SYMBOL_INVERT(handle,i) \
guiInvertRect(handle, KBDCOOR_SYMBOL[i].left+1,KBDCOOR_SYMBOL[i].top+1,\
KBDCOOR_SYMBOL[i].right-1,KBDCOOR_SYMBOL[i].bottom-1);
/*********************************************************************/
//dest: 符号键盘开始
//para: void
//return:void
/*********************************************************************/
void _guiSwKbd_startSymbol( HNDL handle )
{
char langType;
langType = guiQueryLanguageType();
if(langType>2)
langType = LANGUAGE_CHS;
if(langType==LANGUAGE_CHT)
{
KBDCOOR_SYMBOL = (struct tagSwKbd_Coor *)KBDCOOR_SYMBOL_CHT;
}
else
{
KBDCOOR_SYMBOL = (struct tagSwKbd_Coor *)KBDCOOR_SYMBOL_CHS;
}
return;
}
/*********************************************************************/
//dest: 符号键盘结束
//para: void
//return:void
/*********************************************************************/
void _guiSwKbd_endSymbol( HNDL handle )
{
return;
}
/*********************************************************************/
//dest: 符号键盘对笔点消息的响应
//para:
// handle: 键盘控件的handle值
// message:笔点消息类型
// x,y: 笔点位置座标
//return:void
/*********************************************************************/
void _guiSwKbd_actionSymbol(HNDL handle, WORD message, WORD x, WORD y)
{
BYTE bClass;
WORD code;
int result;
TGuiSw_Kbd *pControl;
short langType;
langType = guiQueryLanguageType();
guiEnterWCS();
pControl=(TGuiSw_Kbd *)handle;
//转换成相对于控件的坐标
x -= pControl->base.left;
y -= pControl->base.top;
result=guiSwKbd_SearchPos(KBDCOOR_SYMBOL, x, y); // 搜索位置
if(result == -1) // 不在有效范围之内
{
if(pControl->SelPos != -1)
KBD_SYMBOL_INVERT(handle,pControl->SelPos); // 恢复已按下的键
pControl->SelPos = -1;
guiExitWCS();
return;
}
code=KBDCOOR_SYMBOL[result].code;
switch(message)
{
case PENUP:
if(pControl->SelPos != -1)
{
KBD_SYMBOL_INVERT(handle,pControl->SelPos);
pControl->SelPos=-1;
}
switch(code)
{
case KEY_ENGLISH: // 切换到英文键盘
guiSwKbd_SwitchClass(handle,KBDCLASS_ENGLISH);
break;
case KEY_CHINESE: // 切换到中文键盘
//guiSwKbd_SwitchClass(handle,KBDCLASS_CHINESE);
if(langType==LANGUAGE_CHT)
guiSwKbd_SwitchClass(handle,KBDCLASS_CHT);
else
guiSwKbd_SwitchClass(handle,KBDCLASS_CHINESE);
break;
case KEY_SYMBOL: // 切换到下一个符号键盘
guiSwKbd_SwitchToNextInType(handle);
break;
case KEY_HAND: // 切换到手写键盘
guiSwKbd_SwitchClass(handle,KBDCLASS_HAND);
break;
default:
guiKbd_SendMsg(handle,code,INPUT_MODE_ADD); // 输入一个按键
break;
}
guiPenSound();
break;
case PENMOVE: // 在键盘中移动触笔
if( pControl->SelPos == result )
break;
case PENREENTER: // 触笔移入键盘
case PENDOWN:
if(pControl->SelPos != -1)
KBD_SYMBOL_INVERT(handle,pControl->SelPos); // 取消以前的笔点区域
KBD_SYMBOL_INVERT(handle,result); // 反显笔点区域
pControl->SelPos=result; // 记录笔点位置
break;
case PENREMOVE: // 触笔移出键盘
if(pControl->SelPos != -1)
{
KBD_SYMBOL_INVERT(handle,pControl->SelPos); // 取消原选中位置
pControl->SelPos = -1;
}
break;
}
guiExitWCS();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -