📄 asix_kb.c
字号:
// disp_str[i] = ctrl_str->HW_Icon2[i].icon_data;
// ClearRec(ctrl_str->pGC,GPC_WHITE,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-32,144,16,GPC_REPLACE_STYLE);
// Disp16String((char *)disp_str,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-32);
// for (i=0; i<9; i++)
// disp_str[i] = ctrl_str->HW_Icon1[i].icon_data;
// ClearRec(ctrl_str->pGC,GPC_WHITE,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-16,144,16,GPC_REPLACE_STYLE);
// Disp16String((char *)disp_str,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-16);
// #endif
// #ifdef SANBAO
// disp_str[4] = 0;
// for (i=0; i<4; i++)
// disp_str[i] = ctrl_str->HW_Icon2[i].icon_data;
// ClearRec(WHITE,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-32,144,16,REPLACE_STYLE);
// Disp16String((char *)disp_str,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-32);
// for (i=0; i<4; i++)
// disp_str[i] = ctrl_str->HW_Icon1[i].icon_data;
//
// ClearRec(WHITE,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-16,144,16,REPLACE_STYLE);
// Disp16String((char *)disp_str,ctrl_str->cur_x+CONTROL_ICON_WIDTH,ctrl_str->cur_y-16);
// #endif
// ctrl_str->char_data = ctrl_str->HW_Icon1[0].icon_data;
// ctrl_str->char_flag = KB_HWDEFAULT;
// kb_msg.message = WM_CHAR;
// kb_msg.lparam = ctrl_str->wndid;
// kb_msg.data = (P_U16)(&ctrl_str->char_data);
// kb_msg.wparam = KB_HWDEFAULT;
// AdvSendMessage(GetCurTask()->id, (P_MESSAGE)&kb_msg, NO_SWAP_TASK);
// break;
case WM_SOFTKEY:
{
ASIX_WINDOW *focus;
focus = (ASIX_WINDOW *)GetFocus( );
if( focus == NULL )
break;
kb_msg.message = WM_CHAR;
kb_msg.lparam = focus->wnd_id;
kb_msg.data = (P_U16)(&ctrl_str->char_data);
kb_msg.wparam = ctrl_str->char_data;
AdvSendMessage(GetCurTask()->id, (P_MESSAGE)&kb_msg, NO_SWAP_TASK);
}
break;
case WM_PINYING:
ClearRec(ctrl_str->pGC,GPC_WHITE,(LCD_WIDTH-CHAR_WIDTH*7)/2,ctrl_str->cur_y-CHAR_WIDTH-1,CHAR_WIDTH*7,CHAR_WIDTH,GPC_REPLACE_STYLE );
if (ctrl_str->Pycb->PY_Status == PY_REFRESH ) {
/*显示已按下的拼音*/
// ClearRec(ctrl_str->pGC,GPC_WHITE,(LCD_WIDTH-CHAR_WIDTH*7)/2,ctrl_str->cur_y-CHAR_WIDTH-1,CHAR_WIDTH*7,CHAR_WIDTH,GPC_REPLACE_STYLE );
for( i=0;i<ctrl_str->Pycb->PY_Buf_Offset;i++)
{
pytext[0]=ctrl_str->Pycb->PY_Buffer[i];
TextOut(ctrl_str->pGC,(PBYTE)pytext,(LCD_WIDTH-CHAR_WIDTH*7)/2+(CHAR_WIDTH/2)*i,ctrl_str->cur_y-CHAR_WIDTH-1,0,GPC_BLACK,GPC_REPLACE_STYLE);
}
} else if (ctrl_str->Pycb->PY_Status == PY_QUERY ) {
WORD num = 0;
/*调用拼音的识别函数*/
ctrl_str->Pycb->PY_Buf_Offset=0;
// ClearRec(ctrl_str->pGC,GPC_WHITE,(LCD_WIDTH-CHAR_WIDTH*7)/2,ctrl_str->cur_y-CHAR_WIDTH-1,CHAR_WIDTH*7,CHAR_WIDTH,GPC_REPLACE_STYLE );
// ctrl_str->Pycb->candidate="祝中华人民共和国万岁";
// static char ch[]={"我收拾好行囊决定到她的老家向她表明我的心意东去的中巴颠簸前行空气中弥漫一股属于夏日的气息令人昏昏欲睡不愿自己睡眼惺忪面对她只得打起精神望着窗外急速后退的风景夏日白花花的阳光映得一切迷迷茫茫起来田园风光只剩一抹抹的绿车过渭南进入华阴连绵的青山映入眼底是呵快到她家乡了高高悬着的心似乎获得了点解脱又觉得落不到底窗外远处一团乌云正在纠结但阳光依旧耀眼似乎不觉它的存在于是我只得低下头来再次细细读着随身的一本小书只是思蓄早已飞到她身边"};
// static char ch[]={"祝中华人民共和国万岁"};
// unsigned short *p=(unsigned short *)ch;
p = (WORD *)py_ime( ctrl_str->Pycb->PY_Buffer, &num );
// for(i=0;i<30;i++)
// {
// ctrl_str->Pycb->candidate[i] = *p++;
// }
strncpy( ctrl_str->Pycb->candidate, p, PY_MAX_NUM*2 );
ctrl_str->Pycb->candidatesize = (BYTE)(strlen( (char *)(ctrl_str->Pycb->candidate) )/2);
for( i=0;i<7;i++)
{
ctrl_str->PY_Icon[i].icon_data=ctrl_str->Pycb->candidate[i];
chtext[0]=ctrl_str->PY_Icon[i].icon_data;
TextOut(ctrl_str->pGC,(PBYTE)chtext,(LCD_WIDTH-CHAR_WIDTH*7)/2+i*CHAR_WIDTH,ctrl_str->cur_y-CHAR_WIDTH-1,0,GPC_BLACK,GPC_REPLACE_STYLE);
ActiveAreaSuspend(ctrl_str->PY_Icon[i].icon_id,AREA_REENABLE);
}
ActiveAreaSuspend(ctrl_str->PY_LeftButtonId,AREA_REENABLE);
ActiveAreaSuspend(ctrl_str->PY_RightButtonId,AREA_REENABLE);
} else {
;
}
break;
default:
break;
}
return ASIX_OK;
}
STATUS kbd_repaint( void *ctrl_str, U32 lparam)
{
struct kbd_ctrl *kbctrl;
ASIX_WINDOW *wndptr;
register U8 i, j;
U8 mode, allow;
register U16 xSrc,ySrc;
register U16 position_temp=0;
DWORD bmp;
#ifdef SOLIVE
U8 candidate_num = 8;
U16 disp_str[11];
#endif
#ifdef SANBAO
U8 candidate_num = 4;
U16 disp_str[5];
#endif
if (ctrl_str == NULL || *((U32 *)ctrl_str) != WNDCLASS_KEYBD ) return ASIX_ERROR;
// kbctrl = (struct kb_ctrl *)ctrl_str;
kbctrl = (kbd_ctrl *)ctrl_str;
wndptr = (ASIX_WINDOW *)(kbctrl->wndid);
mode = kbctrl->cur_mode;
allow = kbctrl->allowed_btm;
ySrc = kbctrl->cur_y;
xSrc = kbctrl->cur_x;
j = 0 ;
for(i=0;(i<5) && (mode != BOHAO) ;i++) {
for( ;j<6;j++) {
if (kbctrl->icon_select_map[j]==BEENSELECTED) {
//kbctrl->CtrlIcon[i].icon_name=IconList[j].icon_name;
if ( (kbctrl->CtrlIcon[i].icon_name & kbctrl->allowed_btm)!=0 ){
position_temp=ySrc+i*CONTROL_ICON_HEIGHT;
/*ActiveAreaEnable( (P_U32)&( kbctrl->CtrlIcon[i].icon_id ), ICON_AREA,\
STROKE_MODE, xSrc, position_temp, xSrc+CONTROL_ICON_WIDTH,\
position_temp+CONTROL_ICON_HEIGHT );*/
//modified by dsa 2002/04/17
// switchonetotwo(IconList[j].icon_bmp, xSrc, position_temp,\
// CONTROL_ICON_WIDTH, CONTROL_ICON_HEIGHT);
// SysDrawMonoImage(kbctrl->pGC,IconList[j].icon_bmp,xSrc,position_temp,\
// CONTROL_ICON_WIDTH,CONTROL_ICON_HEIGHT,GPC_BLACK,GPC_WHITE);
bmp=LoadBitmap(IconList[j].icon_bmp, NULL);
DisplayBMP(kbctrl->pGC,xSrc,position_temp,bmp);
FreeBitmap(bmp);
} else {
//modified by dsa 2002/04/17
// Advswitchonetotwo(IconList[j].icon_bmp, xSrc, ySrc+i*CONTROL_ICON_HEIGHT,\
// CONTROL_ICON_WIDTH, CONTROL_ICON_HEIGHT, BLACK_TO_DARKGREY, WHITE_TO_WHITE);
// SysDrawMonoImage(kbctrl->pGC,IconList[j].icon_bmp,xSrc,ySrc+i*CONTROL_ICON_HEIGHT,\
// CONTROL_ICON_WIDTH,CONTROL_ICON_HEIGHT,GPC_WHITE,GPC_BLACK);
bmp=LoadBitmap(IconList[j].icon_bmp, NULL);
DisplayBMP(kbctrl->pGC,xSrc,ySrc+i*CONTROL_ICON_HEIGHT,bmp);
FreeBitmap(bmp);
}
//kbctrl->icon_select_map[j] = BEENSELECTED;
j++;
break;
}
}
}
for (i=0; (i<5) && (mode != BOHAO) ;i++) {
position_temp = ySrc+(i+1)*CONTROL_ICON_HEIGHT;
DrawLine(kbctrl->pGC, WHITE,xSrc,position_temp,xSrc+CONTROL_ICON_WIDTH,\
position_temp, 0,REPLACE_STYLE);
}
if( mode != BOHAO )
xSrc += CONTROL_ICON_WIDTH;
switch (mode)
{
case YINGWEN_L:
// PutRec(kbctrl->pGC, lkb_bitmap, xSrc, ySrc, EKEY_WIDTH*10, EKEY_HEIGHT*5, REPLACE_STYLE, 0);
bmp=LoadBitmap(lkb_bitmap, NULL);
DisplayBMP(kbctrl->pGC, xSrc, ySrc, bmp);
FreeBitmap(bmp);
break;
case YINGWEN_U:
// PutRec(kbctrl->pGC, ukb_bitmap, xSrc, ySrc, EKEY_WIDTH*10, EKEY_HEIGHT*5, REPLACE_STYLE, 0);
bmp=LoadBitmap(ukb_bitmap, NULL);
DisplayBMP(kbctrl->pGC, xSrc, ySrc, bmp);
FreeBitmap(bmp);
break;
case SHUZI:
// PutRec(kbctrl->pGC, nkb_bitmap, xSrc, ySrc, NKEY_WIDTH*7, NKEY_HEIGHT*3, REPLACE_STYLE, 0);
bmp=LoadBitmap(nkb_bitmap, NULL);
DisplayBMP(kbctrl->pGC, xSrc, ySrc, bmp);
FreeBitmap(bmp);
break;
case FUHAO:
// PutRec(kbctrl->pGC, fkb_bitmap, xSrc, ySrc, FKEY_WIDTH*10, FKEY_HEIGHT*4, REPLACE_STYLE, 0);
bmp=LoadBitmap(fkb_bitmap, NULL);
DisplayBMP(kbctrl->pGC, xSrc, ySrc, bmp);
FreeBitmap(bmp);
break;
case PINYING:
// PutRec(kbctrl->pGC, lkb_bitmap, xSrc, ySrc, EKEY_WIDTH*10, EKEY_HEIGHT*5, REPLACE_STYLE, 0);
bmp=LoadBitmap(lkb_bitmap, NULL);
DisplayBMP(kbctrl->pGC, xSrc, ySrc, bmp);
FreeBitmap(bmp);
DrawRec(kbctrl->pGC, BLACK,24,ySrc-18,136,ySrc,GPC_SOLID_LINE,REPLACE_STYLE);
break;
case SHOUXIE:
// PutRec(kbctrl->pGC, hkb_bitmap, xSrc+130, ySrc, 14, 75, REPLACE_STYLE, 0);
bmp=LoadBitmap(hkb_bitmap, NULL);
DisplayBMP(kbctrl->pGC, xSrc+130, ySrc, bmp);
FreeBitmap(bmp);
DrawRec(kbctrl->pGC, BLACK, xSrc, ySrc, xSrc+64, ySrc+74, GPC_SOLID_LINE, REPLACE_STYLE);
DrawRec(kbctrl->pGC, BLACK, xSrc+65, ySrc, xSrc+129, ySrc+74, GPC_SOLID_LINE, REPLACE_STYLE);
#ifdef SOLIVE
// disp_str[8] = 0;
// for (i=0; i<9; i++)
// disp_str[i] = kbctrl->HW_Icon2[i].icon_data;
// ClearRec(kbctrl->pGC,GPC_WHITE,kbctrl->cur_x+CONTROL_ICON_WIDTH,kbctrl->cur_y-32,144,16,GPC_REPLACE_STYLE);
// Disp16String((char *)disp_str,kbctrl->cur_x+CONTROL_ICON_WIDTH,kbctrl->cur_y-32);
for (i=0; i<=9; i++)
disp_str[i] = kbctrl->HW_Icon1[i].icon_data;
disp_str[10] = 0;
ClearRec(kbctrl->pGC,GPC_WHITE,kbctrl->cur_x+CONTROL_ICON_WIDTH,kbctrl->cur_y-16,144,16,GPC_REPLACE_STYLE);
DrawRec(kbctrl->pGC,GPC_BLACK,(LCD_WIDTH-CHAR_WIDTH*10)/2-1,ySrc-CHAR_WIDTH-2,(LCD_WIDTH-CHAR_WIDTH*10)/2+CHAR_WIDTH*10,ySrc-1,GPC_SOLID_LINE,GPC_REPLACE_STYLE);
Disp16String((char *)disp_str,(LCD_WIDTH-CHAR_WIDTH*10)/2,kbctrl->cur_y-CHAR_WIDTH-1 );
#endif
#ifdef SANBAO
//modified by dsa 2002/04/17
// switchonetotwo(sx_number,2,ySrc-16,156,16);
SysDrawMonoImage(kbctrl->pGC,sx_number,2,ySrc-16,\
156,16,GPC_BLACK,GPC_WHITE);
disp_str[4] = 0;
for (i=0; i<4; i++)
disp_str[i] = kbctrl->HW_Icon2[i].icon_data;
ClearRec(WHITE,kbctrl->cur_x+CONTROL_ICON_WIDTH,kbctrl->cur_y-32,144,16,REPLACE_STYLE);
Disp16String((char *)disp_str,kbctrl->cur_x+CONTROL_ICON_WIDTH,kbctrl->cur_y-32);
for (i=0; i<4; i++)
disp_str[i] = kbctrl->HW_Icon1[i].icon_data;
ClearRec(WHITE,kbctrl->cur_x+CONTROL_ICON_WIDTH,kbctrl->cur_y-16,144,16,REPLACE_STYLE);
Disp16String((char *)disp_str,kbctrl->cur_x+CONTROL_ICON_WIDTH,kbctrl->cur_y-16);
#endif
break;
case BOHAO:
{
U16 aw, ah, bw, bh;
for (i=0;i<12;i++){
bmp=LoadBitmap(BohaoList[i].icon_bmp, NULL);
bw = ((BITMAP *)bmp)->info.width;
bh = ((BITMAP *)bmp)->info.height;
aw = bw +3;
ah = bh +8;
position_temp = xSrc +(i % 3)*aw;
//modified by dsa 2002/04/17
// switchonetotwo(BohaoList[i].icon_bmp, position_temp + 4, ySrc+(i / 3)*40+7, \
// 44, 25);
// SysDrawMonoImage(kbctrl->pGC,BohaoList[i].icon_bmp,position_temp + 4,ySrc+(i / 3)*40+7,\
// 44,25,GPC_BLACK,GPC_WHITE);
DisplayBMP(kbctrl->pGC,position_temp,ySrc+(i / 3)*ah,bmp);
FreeBitmap(bmp);
}
}
break;
default:
break;
}
return ASIX_OK;
}
STATUS SysOpenSoftKey(U32 pGC,P_U32 areaId,U16 xPos,U16 yPos,U16 keyWidth,U16 keyHeight,U16 numCol,U16 numRow,P_U16 keyMap,P_U8 bitMap)
{
ATVCB *p;
int id;
SOFTKEY *softkey;
ATV *info,*start;
DWORD bmp;
if( areaId == NULL )
return PPSM_ERR_AREA_ID;
/* Get id of the running task */
get_tid(&id);
/* Get pointer to ATVCB of the running task */
p = gSysTcbTbl[id-1].atvcb;
softkey=( SOFTKEY * )SysLmalloc( sizeof( SOFTKEY ) );
if( softkey == NULL )
return PPSM_ERR_NO_MEMORY;
softkey->pbitmap=(WORD *)Lcalloc( numCol*keyWidth*numRow*keyHeight*2);
if( softkey->pbitmap == NULL )
{
SysLfree( softkey );
return PPSM_ERR_NO_MEMORY;
}
info=( ATV* )SysLmalloc( sizeof( ATV ) );
if( info == NULL )
{
SysLfree( softkey->pbitmap );
SysLfree( softkey );
return PPSM_ERR_NO_MEMORY;
}
softkey->xPos=xPos;
softkey->yPos=yPos;
softkey->numRow=numRow;
softkey->numCol=numCol;
softkey->keyWidth=keyWidth;
softkey->keyHeight=keyHeight;
// softkey->areaWidth=numCol*keyWidth;
// softkey->areaHeight=numRow*keyHeight;
softkey->keymap=keyMap;
softkey->bitmap=bitMap;
// softkey->WndId=WndId;
softkey->areaId=( DWORD )info;
start=p->stack[ p->top ];
info->mode=CONTINUOUS_MODE;
info->areaId=( DWORD )info;
info->flag=AREA_REENABLE;
info->previous=NULL;
info->next=start;
start->previous=info;
info->type=KEY_AREA;
info->xsrc=softkey->xPos;
info->ysrc=softkey->yPos;
info->xdest=softkey->xPos + softkey->numCol * softkey->keyWidth-1;
info->ydest=softkey->yPos + softkey->numRow * softkey->keyHeight-1;
// info->wndId=WndId;
info->extptr2=softkey;
// pad=info->extptr2;
start=info;
p->stack[ p->top ]=start;
SaveRec( pGC,softkey->pbitmap,xPos,yPos,numCol*keyHeight,numRow*keyWidth,0 );
// SysDrawMonoImage(pGC,bitMap,xPos,yPos,numCol*keyWidth,numRow*keyHeight,GPC_BLACK,GPC_WHITE );
// SysDrawBitmap( pGC,bitMap,xPos,yPos,numCol*keyWidth,numRow*keyHeight,GPC_BLACK,GPC_WHITE );
bmp=LoadBitmap(bitMap, NULL);
DisplayBMP(pGC,xPos,yPos,bmp);
FreeBitmap(bmp);
*areaId=start->areaId;
return PPSM_OK;
}
STATUS SysCloseSoftKey ( DWORD areaId )
{
ATVCB *p;
ATV *start,*info;
int id;
SOFTKEY *softkey;
DWORD pGC;
/* Get id of the running task */
get_tid(&id);
/* Get pointer to ATVCB of the running task */
p = gSysTcbTbl[id-1].atvcb;
pGC=GetCurGC( );
start=p->stack[ p->top ];
if( ( info = findId( start,areaId ) ) == NULL || info->extptr2 == NULL )
return PPSM_ERR_AREA_ID;
if( start == info )
{
start=info->next;
if ( start != NULL )
start->previous=NULL;
}
else
{
info->previous->next=info->next;
if( info->next != NULL )
info->previous->next->previous=info->previous;
}
softkey=info->extptr2;
PutRec( pGC,softkey->pbitmap,softkey->xPos,softkey->yPos,
softkey->numRow*softkey->keyWidth,softkey->numCol*softkey->keyHeight,GPC_REPLACE_STYLE,0 );
SysLfree( softkey->pbitmap );
SysLfree( softkey );
SysLfree( info );
p->stack[ p->top ]=start;
return PPSM_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -