📄 mmihz.c
字号:
}
*/
if((data->CurPy==data->InitPy&&(data->chineseData.PageNum) && ConditionStr[strlen(ConditionStr)-1]!='#')
||(data->CurPy==data->InitPy&&(data->chineseData.PageNum) &&ConditionHz[wordstrlen(ConditionHz)-1]!='#'))
{
data->chineseData.PageNum--;
data->CurPx=data->InitPx;
data->CurPy=data->InitPy+16;
}
else if((data->CurPy==data->InitPy+16 && ConditionStr[strlen(ConditionStr)-1]!='#')
||(data->CurPy==data->InitPy+16 &&ConditionHz[wordstrlen(ConditionHz)-1]!='#'))
data->CurPy-=16;
data->StartNextTime=0;
break;
case KCD_MNUDOWN:
/*
if(ConditionStr[5]==':'){
if(CurPy<6*16)
CurPy=CurPy+16;
else CurPy=1*16;
}
*/
if((data->CurPy==data->InitPy+16&&data->chineseData.SatisfyNum>data->chineseData.MAX_Satisfy &&strlen(ConditionStr)&&ConditionStr[strlen(ConditionStr)-1]!='#')
||(data->CurPy==data->InitPy+16&&data->chineseData.SatisfyNum>data->chineseData.MAX_Satisfy&&wordstrlen(ConditionHz)&&ConditionHz[wordstrlen(ConditionHz)-1]!='#'))
{
data->chineseData.PageNum++;
data->CurPx=data->InitPx;
data->CurPy=data->InitPy;
}
else if((data->CurPy==data->InitPy&&data->chineseData.SatisfyNum>5&&strlen(ConditionStr)&& ConditionStr[strlen(ConditionStr)-1]!='#')
||(data->CurPy==data->InitPy&&data->chineseData.SatisfyNum>5&&wordstrlen(ConditionHz)&&ConditionHz[wordstrlen(ConditionHz)-1]!='#'))
data->CurPy+=16;
data->StartNextTime=0;
break;
case KCD_MNURIGHT:
/*
if(ConditionStr[5]==':'){
if((CurPx<104)&&(SatisfyNum>(CurPy-16)/16*7+CurPx/16+1))
CurPx=CurPx+16;
else if((CurPx==104)&&(SatisfyNum>(CurPy-16)/16*7+CurPx/16+1))
{ Input_one_key(KCD_MNUDOWN);
CurPx=8;
}
}
*/
if(data->chineseData.SatisfyNum>(data->CurPy-data->InitPy)/16*5+data->CurPx/24+1)
{
if(data->CurPx<104)
data->CurPx=data->CurPx+24;
else if((data->CurPx==104)&&(data->CurPy==data->InitPy))
{ data->CurPx=8;
data->CurPy+=16;
}
else if((data->CurPx==104)&&(data->CurPy==data->InitPy+16))
{ data->CurPx=8;
data->CurPy=data->InitPy;
}
}
else { data->CurPx=8;
data->CurPy=data->InitPy;
}
/*
if((CurPx<104)&&(SatisfyNum>(CurPy-InitPy)/16*5+CurPx/24))
CurPx=CurPx+24;
else if((CurPx==104)&&(SatisfyNum>(CurPy-InitPy)/16*5+CurPx/24))
{ if((CurPy==InitPy+16&&SatisfyNum>MAX_Satisfy &&strlen(ConditionStr)&&ConditionStr[strlen(ConditionStr)-1]!='#')
||(CurPy==InitPy+16&&SatisfyNum>MAX_Satisfy&&wordstrlen(ConditionHz)&&ConditionHz[wordstrlen(ConditionHz)-1]!='#'))
LineNum++;
else if((CurPy==InitPy&&LineNum&&SatisfyNum>5&&strlen(ConditionStr)&& ConditionStr[strlen(ConditionStr)-1]!='#')
||(CurPy==InitPy&&LineNum &&SatisfyNum>5&&wordstrlen(ConditionHz)&&ConditionHz[wordstrlen(ConditionHz)-1]!='#'))
CurPy=CurPy+16;
CurPx=8;
}
*/
data->StartNextTime=0;
break;
case KCD_MNULEFT:
/*
if(ConditionStr[5]==':'){
if(CurPx>8)
CurPx=CurPx-16;
else{if(CurPy==16&&CurPx==8) break;
else{Input_one_key(KCD_MNUUP);
CurPx=104;
}
}
}
*/
if(data->CurPx>=32)
data->CurPx=data->CurPx-24;
else if(data->CurPy==data->InitPy&&data->CurPx==8)
{
if((data->chineseData.SatisfyNum%5==0)||(data->chineseData.SatisfyNum>=data->chineseData.MAX_Satisfy))
data->CurPx=104;
else data->CurPx=data->chineseData.SatisfyNum%5*24-16;
if(data->chineseData.SatisfyNum>=data->chineseData.MAX_Satisfy)
data->CurPy=16+data->InitPy;
else data->CurPy=data->chineseData.SatisfyNum/5*16+data->InitPy;
}
else if(data->CurPy==data->InitPy+16&&data->CurPx==8)
{ data->CurPx=104;
data->CurPy=data->InitPy;
}
data->StartNextTime=0;
break;
case KCD_RIGHT:
if(wordstrlen(ConditionHz))
{ ConditionHz[wordstrlen(ConditionHz)-1]='\0';
memset(ConditionStr,0,sizeof(ConditionStr));
}
else if( strlen(ConditionStr))
{ memset(ConditionHz,0,sizeof(ConditionHz));
if(ConditionStr[strlen(ConditionStr)-1]==':')
memset(ConditionStr,0,sizeof(ConditionStr));
else ConditionStr[strlen(ConditionStr)-1] ='\0';
}
data->chineseData.CurCode = -1;
data->CurPx=data->InitPx;
data->CurPy=data->InitPy;
//PageNum = 0;
data->chineseData.PageNum =0;
data->chineseData.SatisfyNum = 0;
data->StartNextTime=0;
if(ConditionHz[0]=='\0'&&ConditionStr[0]=='\0')
hz_destroy(data->hz_win);
break;
case KCD_LEFT:
case KCD_OK:
data->StartNextTime=0;
/*
if(ConditionStr[5]==':')
SelectHanZi((CurPy-96)/16*5+CurPx/24+1);
*/
if(strlen(ConditionStr)||wordstrlen(ConditionHz))
{
if(data->CurPx==104&&data->CurPy==data->InitPy+16)
SelectHanZi(KCD_0);
else SelectHanZi((data->CurPy-data->InitPy)/16*5+data->CurPx/24+1);
}
break;
case KCD_2:
case KCD_3:
case KCD_4:
case KCD_5:
case KCD_6:
case KCD_7:
case KCD_8:
case KCD_9:
case KCD_0:
if(wordstrlen(ConditionHz)&&ConditionHz[wordstrlen(ConditionHz)-1]!='#'){
memset(ConditionStr,0,10);//sizeof(ConditionStr));
memset(ConditionHz,0,sizeof(ConditionHz));
data->CurPx=data->InitPx;
data->CurPy=data->InitPy;
}
if((wordstrlen(ConditionHz)&&ConditionHz[wordstrlen(ConditionHz)-1]=='#')
||(strlen(ConditionStr) && (ConditionStr[strlen(ConditionStr)-1]=='#'||ConditionStr[strlen(ConditionStr)-1]==':')))
{
// if(KeyCode)
SelectHanZi(KeyCode);
}
else SetTheConditionStr(&data->chineseData, KeyCode);
#if 0
else if(strlen(ConditionStr)==0 && KeyCode)
{ data->chineseData.Index = 0;
data->chineseData.CurCode = KeyCode;
ConditionStr[0]=InputMethodFirstChar[data->chineseData.CurCode-2][data->chineseData.Index];
}
else if(strlen(ConditionStr)==1 && (data->chineseData.InTheTime) && data->chineseData.CurCode==KeyCode && KeyCode)
{ data->chineseData.Index = (data->chineseData.Index + 1) % strlen(InputMethodFirstChar[data->chineseData.CurCode-2]);
ConditionStr[0]=InputMethodFirstChar[data->chineseData.CurCode-2][data->chineseData.Index];
}
else if((strlen(ConditionStr) || KeyCode) && (strlen(ConditionStr)<6))
{ if( data->chineseData.CurCode!=KeyCode || !(data->chineseData.InTheTime) ) data->chineseData.Index=0; // Next KCD,then New the Index;
else ConditionStr[strlen(ConditionStr)-1]= 0; // in the same KCD loop,Del The Last Key;
data->chineseData.CurCode = KeyCode;
SetOtherMightChar(&data->chineseData,KeyCode);
if(strlen(data->chineseData.OtherMightChar))
{ ConditionStr[strlen(ConditionStr)]= data->chineseData.OtherMightChar[data->chineseData.Index];
data->chineseData.Index = (data->chineseData.Index + 1) % strlen(data->chineseData.OtherMightChar);
}
else ConditionStr[strlen(ConditionStr)]= (char)(0x30 + KeyCode);
}
#endif
/* if(strlen(ConditionStr)==0 && KeyCode==KCD_0)
{ StartNextTime=0;
winHide(data->hz_win);
winFocus(data->l_oldFocus);
return 0;
}*/
if(strlen(ConditionStr)){
data->CurPx=data->InitPx;
data->CurPy=data->InitPy;
}
//PageNum = 0;
data->chineseData.PageNum=0;
if(strlen(ConditionStr)>7) ConditionStr[strlen(ConditionStr)-1] = 0;
break;
default:
break;
}
data->chineseData.InTheTime = data->StartNextTime;
if( KeyCode==KCD_RIGHT || /*KeyCode==KCD_CURSORDISP ||*/KeyCode==KCD_MNULEFT||KeyCode==KCD_MNURIGHT||
KeyCode==KCD_MNUDOWN || KeyCode==KCD_MNUUP || KeyCode==KCD_STAR) data->chineseData.InTheTime = 0;
/* else if(strlen(ConditionStr)==1 && strlen(InputMethodFirstChar[data->chineseData.CurCode-2])<2 ) data->chineseData.InTheTime = 0;
else if( strlen(ConditionStr) >1 && strlen(data->chineseData.OtherMightChar)<2 ) data->chineseData.InTheTime = 0;*/
else if(OtherCharIsOnlyOne(&data->chineseData)) data->chineseData.InTheTime = 0;
if((data->chineseData.InTheTime) && strlen(ConditionStr))
{ if(strlen(ConditionStr)==1) timStart(data->l_intime);
else if( strlen(ConditionStr)==2 && (KeyCode==KCD_4||KeyCode==KCD_8)) timStart(data->l_intime);
else timStart(data->l_intimelong);
}
if((wordstrlen(ConditionHz)&&ConditionHz[wordstrlen(ConditionHz)-1]!='#'&&KeyCode!=KCD_CURSORDISP&&KeyCode!=KCD_MNULEFT&&KeyCode!=KCD_MNURIGHT)
||(strlen(ConditionStr) && ConditionStr[strlen(ConditionStr)-1]!='#' && KeyCode!=KCD_CURSORDISP&&KeyCode!=KCD_MNULEFT&&KeyCode!=KCD_MNURIGHT))
{
TRACE_EVENT("setthebuf");
SetThePromptBuf(&data->chineseData);
if(data->chineseData.PromptBuf[0]==0) Input_one_key(win,KCD_RIGHT);
}
sprintf(msg,"zxp2 string:%s",ConditionStr);
TRACE_EVENT(msg);
if(strlen(ConditionStr)||wordstrlen(ConditionHz)) DispPromptBuf(data->hz_win);
return 1;
}
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
static int TimerEH(MfwEvt e, MfwTim *tc)
{
//TRACE_EVENT("TimerEH");
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
T_HZ_INFO * data = (T_HZ_INFO *)win_data->user;
TRACE_EVENT("TimerEH");
if( tc == ((MfwTim*)mfwControl(data->l_intime)) )
{
data->chineseData.InTheTime = 0;
// dsplflag=0;
if(winIsFocussed(win))
DispPromptBuf(data->hz_win);
}
if( tc == ((MfwTim*)mfwControl(data->l_intimelong)) )
{
data->chineseData.InTheTime = 0;
// dsplflag=0;
if(winIsFocussed(win))
DispPromptBuf(data->hz_win);
}
return 1;
}
/*******************************************************************************
$Function: hzEventWin
$Description: window event handler.
$Returns: MFW_EVENT_CONSUMED.
$Arguments: None.
*******************************************************************************/
static int hzEventWin (MfwEvt e, MfwWin *w)
{
T_HZ_INFO * data = (T_HZ_INFO *)w->user;
T_MFW_HND parent_win = data->parent;
U8 mode;
TRACE_EVENT("hzEventWin");
mode=dspl_Enable(0);
switch (e)
{ case MfwWinVisible:
if(wstrlen(data->chineseData.PromptBuf))
{
SEND_EVENT(parent_win, E_EDITOR_UPDATE, 1, 0);
flagForNewWin=1;
dspl_Clear(0, 82, 120, 131 );
DispPromptBuf(data->hz_win);
flagForNewWin=0;
}
break;
default:
break;
}
dspl_Enable(mode);
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: hzEventKbd
$Description: keyboard event handler
$Returns: MFW_EVENT_CONSUMED.
$Arguments: None.
*******************************************************************************/
static int hzEventKbd (MfwEvt e, MfwKbd *kc)
{
// TRACE_EVENT("hzEventKbd");
T_MFW_HND win = mfw_paren
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -