⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmihz.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
         	    	}
         	 */   	
                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 + -