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

📄 mmichineseinput.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                            dspl_TextOut_Blk(4,FIRST_LINE, 115, DSPL_TXTATTR_UNICODE,(char*)data->wszTextBuffer);
                            TextCursorDisplayContorl(&data->Ime, data->CursorPosition, 0);
                        }
                    }
                    else
                    {
						/* 2003/12/01 sunsj modify lcd width */
                        dspl_TextOut_Blk(4, FIRST_LINE, 115, DSPL_TXTATTR_UNICODE, (char *)Temp_ptr);
                    }
					drawcolorclarity(102, 1 ,spareNum, 0xffffff);
                    /* 2003/10/13 sunsj modify pinyin input method text display */
                    /*else if ( data->Ime.TextBufferCount <= CANDIDATES_PER_GROUP*2 ) //when data->Ime.TextBufferCount > CANDIDATES_PER_GROUP
                    {
                        Temp_ptr = data->wszTextBuffer;
                        Temp_ptr = Temp_ptr + CANDIDATES_PER_GROUP;
                        dspl_TextOut(4, FIRST_LINE, DSPL_TXTATTR_UNICODE, (char *)data->wszTextBuffer);
                        dspl_TextOut(4, SECOND_LINE, DSPL_TXTATTR_UNICODE, (char *)Temp_ptr);
                    }*/
                    /*{
                        if ( data->Ime.TextBufferCount == data->Ime.TextCursor )
                        {
                            Temp_ptr = data->wszTextBuffer;
                            Temp_ptr = Temp_ptr + data->Ime.TextBufferCount - CANDIDATES_PER_GROUP;
                            dspl_TextOut(1,FIRST_LINE,DSPL_TXTATTR_UNICODE,(char *)Temp_ptr);
                        }
                        else if ( data->Ime.TextCursor < CANDIDATES_PER_GROUP )
                        {
                            dspl_TextOut(1,FIRST_LINE,DSPL_TXTATTR_UNICODE,(char*)data->wszTextBuffer);
                            TextCursorDisplayContorl(&data->Ime, data->CursorPosition, 0);
                        }
                        else
                        {
                            Temp_ptr = &data->wszTextBuffer[data->Ime.TextCursor] - CANDIDATES_PER_GROUP + 1;
                            dspl_TextOut(1,FIRST_LINE,DSPL_TXTATTR_UNICODE,(char *)Temp_ptr);
                            dspl_TextOut(73,0,DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_INVERS,(char*)data->CursorPosition);
                        }
                    }*/

                    if ( data->Ime.EditorMode == STROKE_INPUT_MODE )
                    {
                        /* 2003/10/26 sunsj modify for stroke mode display */
                        //dspl_TextOut(0,0,DSPL_TXTATTR_UNICODE,(char*)StrokePrompt);   /* Display input prompt */
                        dspl_colorTextOut(0,0,DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_TRANSPARENT,(char*)StrokePrompt,0xffffff);   /* Display input prompt */ //sunsjtest
                        /* Display input sequence for stroke */
                    }
                    else if ( data->Ime.EditorMode == PINYIN_INPUT_MODE )
                    {
                        /* 2003/10/13 sunsj */
                        dspl_colorTextOut(0,0,DSPL_TXTATTR_UNICODE|DSPL_TXTATTR_TRANSPARENT,(char*)PinYinPrompt,0xffffff);   /* Display input prompt */ //sunsjtest
                        //dspl_TextOut(0,0,DSPL_TXTATTR_UNICODE,(char*)PinYinPrompt);   /* Display input prompt */
                        /* Display input sequence for Pin-yin input */
                    }

                    /* 2003/10/13 sunsj modify display attr */
                    /* Display candidate charaters returned from eZiText */
                    dspl_TextOut(3,SIXTH_LINE,DSPL_TXTATTR_UNICODE,(char*)data->wcCandidates);
                    /* Highlight the candidate character pointed by Ime.CandidateCursor */
                    CandidateHighlightDisplayContorl(&data->Ime, data->HighlightedCandidate);
                    /* draw rectangle */
                    dspl_DrawRect(0, 97, 119, 130);
                    /* 2003/11/27 sunsj */
					displaySoftKeys(TxtSoftOK,TxtDelete);   /* Softkey display*/
#if(MAIN_LCD_SIZE==3)
					draw_softkeybar_fourdirection_arrow();//jhxu720 add
#endif
                    //displaySoftKeys(TxtSoftSelect,TxtSoftOK);   /* Softkey display*/
                }
                break;
            default:
                break;
            }
            dspl_SetBkgColor(oldColor);
        }
        break;
    default:
        return 0;
    }
    return 1;
}


/*******************************************************************************

 $Function:    	chinese_input_kbd_cb

 $Description:	Keyboard event handler

 $Returns:		status int

 $Arguments:	window handle event, keyboard control block

 $History:      2003/11/10 sunsj Return to idle when close screen

*******************************************************************************/

static int chinese_input_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard)
{
    T_MFW_HND           win         = mfw_parent (mfw_header());
    T_MFW_WIN       *   win_data    = ((T_MFW_HDR *)win)->data;
    T_chinese_input *   data        = (T_chinese_input *)win_data->user;
    T_MFW_HND           parent_win  = data->parent_win;
    USHORT              Identifier  = data->Identifier;
    int                 temp = 0;
    PZI8WCHAR           temp_ZiKeyMap;
    T_MFW_WIN           *parentwin_data =((T_MFW_HDR *)parent_win)->data;
    T_EDITOR_INFO       *parentdata   =(T_EDITOR_INFO *)parentwin_data->user;
    //void (* Callback)() = data->Callback;

    //TRACE_EVENT("chinese_input_kbd_cb");

    switch ( keyboard->code )
    {
    case KCD_LEFT:
        switch ( data->Ime.EditorMode )
        {
        case STROKE_INPUT_MODE:
            switch ( data->Ime.InputScreenType )
            {
            case TEXT_DISPLAY_SCREEN:
                //access to the option list.
                //data->options_win = SmsSend_OPT_start(win,&SmsSend_R_OPTAttrib);
                SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_LEFT, NULL);
                break;
            case STROKE_INPUT_SCREEN:
            case WORD_ASSOCIATION_SCREEN:
                IMESelectCandidate(&data->Ime, data->wszElementBuffer);
                data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
                break;
            default:
                break;
            }
            winShow(win);
            break;

        case PINYIN_INPUT_MODE:
            switch ( data->Ime.InputScreenType )
            {
            case TEXT_DISPLAY_SCREEN:
                //chinese_input_destroy(win);
                SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_LEFT, NULL);
                //access to the option list.
                break;
            case PINYIN_INPUT_SCREEN:
            case WORD_ASSOCIATION_SCREEN:
                /* 2003/11/27 sunsj */
                if ( (data->Ime.TextBufferCount * 2) < (TEXT_BUFFER_EDIT_SIZE/2)*2 )
                {
                    IMESelectCandidate(&data->Ime, data->wszElementBuffer);
                    data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
                }
                else
                {
                    chinese_input_destroy(win);
                }
                break;
            default:
                break;
            }
            winShow(win);
        default:
            break;
        }   
        break;
    case KCD_RIGHT:
        switch ( data->Ime.EditorMode )
        {
        case STROKE_INPUT_MODE:
            switch ( data->Ime.InputScreenType )
            {
            case TEXT_DISPLAY_SCREEN:
                if ( data->Ime.TextBufferCount == 0 )
                {   /* When there is no stored data, return back to the menu*/
                    chinese_input_destroy(win);
                }
                else
                {
                    IMEClear(&data->Ime, data->wszElementBuffer);
                }
                break;
            case STROKE_INPUT_SCREEN:
                IMEClear(&data->Ime, data->wszElementBuffer);
                data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];

                /* 2003/12/01 remove chinese_input_destroy will display screen */
                //winShow(win);

                /* 2003/10/26 sunsj add for stroke mode */
                if ( data->Ime.pGetParam->ElementCount == 0 )
                {
                    chinese_input_destroy(win);
                }
                break;
            case WORD_ASSOCIATION_SCREEN:
                data->Ime.InputScreenType = TEXT_DISPLAY_SCREEN;

                /* 2003/12/01 remove chinese_input_destroy will display screen */
                //winShow(win);
                chinese_input_destroy(win);
//		       				memset(&data->HighlightedCandidate, 0, sizeof(data->HighlightedCandidate));
                break;
            default:
                /* 2003/10/26 sunsj add for stroke mode */
                winShow(win);
                break;
            }
            /* 2003/10/26 sunsj remove for new stroke mode */
            //winShow(win);
            break;
        case PINYIN_INPUT_MODE:
            switch ( data->Ime.InputScreenType )
            {
            case TEXT_DISPLAY_SCREEN:
                if ( data->Ime.TextBufferCount == 0 )
                {   /* When there is no stored data, return back to the menu*/
                    chinese_input_destroy(win);
                    //SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_RIGHT, NULL);
                }
                else
                {
                    IMEClear(&data->Ime, data->wszElementBuffer);
                    data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
                }
                break;
            case PINYIN_INPUT_SCREEN:
                /* 2003/10/13 sunsj modify clear function */
                //IMEClear(&data->Ime, data->wszElementBuffer);
                Zi_onekey_clear(&data->Ime);
                data->HighlightedCandidate[0] = data->wcCandidates[data->Ime.CandidateCursor];
				/* 2003/12/01 remove chinese_input_destroy will display screen */
                //winShow(win);

                if ( data->Ime.ElementNumber == 0 )
                {
                    chinese_input_destroy(win);
                }

                break;
            case WORD_ASSOCIATION_SCREEN:
//				edtSymbol(parentdata->edt_edt,0);
                data->Ime.InputScreenType = TEXT_DISPLAY_SCREEN;
                //winShow(win);
                chinese_input_destroy(win);
//		       				memset(&data->HighlightedCandidate, 0, sizeof(data->HighlightedCandidate));
                break;
            default:
                winShow(win);
                break;
            }
            //chinese_input_destroy(win);
            //winShow(win);
            break;
        default:
            break;
        }
        break;
    case KCD_HUP:
        /* 2003/10/13 sunsj/ modify the hup_key's operation */
        //SEND_EVENT(win, CHINESE_INPUT_DESTROY, INFO_KCD_HUP, NULL);
        chinese_input_destroy(win);
/*	    	
        switch(data->EditorMode)
        {
            case STROKE_INPUT_MODE:
                switch (data->Ime.InputScreenType)
                {
                    case TEXT_DISPLAY_SCREEN:
                    case STROKE_INPUT_SCREEN:
                    case WORD_ASSOCIATION_SCREEN:
                        chinese_input_destroy(win);
                        break;
                    default:
                        break;
                }
                break;
            case PINYIN_INPUT_MODE:
                switch (data->Ime.InputScreenType)
                {
                    case TEXT_DISPLAY_SCREEN:
                    case PINYIN_INPUT_SCREEN:
                    case WORD_ASSOCIATION_SCREEN:
         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -