📄 jyinput.c
字号:
_Py_Select_Change();
m_nSelectPos = 0;
return TRUE;
}
}
else if (key == KEY_RFUNC)
{
if(piinfo->outcode_cur > 0){
piinfo->outcode_cur--;
piinfo->hz_outcode[piinfo->outcode_cur] = 0;
m_nPySelect = 0;
if (piinfo->outcode_cur !=0) {
m_nPyCount = _proc_py_index();
}else{
m_nPyCount = 0;
}
memcpy(piinfo->py_code , m_szPylist + (piinfo->outcode_cur + 1) * m_nPySelect, piinfo->outcode_cur) ;
piinfo->py_code[piinfo->outcode_cur] = 0;
_Py_Select_Change();
return TRUE;
}
else
{
PostMessage(g_hImeWnd, MSG_IME_CLOSE, 0, 0);
}
}
return FALSE;
}
static BOOL _proc_bh_key_press(unsigned short key)
{
ST_INPUT_INFO *piinfo = &m_piinfo;
if(key >= KEY_1 && key <= KEY_5)
{
if (g_pstBhTable != NULL)
{
if (piinfo->outcode_cur >= 10)
return TRUE;
piinfo->hz_outcode[piinfo->outcode_cur++] = key - 48;
piinfo->hz_outcode[piinfo->outcode_cur] = '\0';
m_nSelectPos = 0;
piinfo->hz_found_cur = 0;
_find_bh_hzcode();
_put_bh_to_array();
}
return TRUE;
}
else if (key == KEY_RFUNC)
{
if (piinfo->outcode_cur > 0)
{
piinfo->outcode_cur--;
piinfo->hz_outcode[piinfo->outcode_cur] = 0;
m_nSelectPos = 0;
_find_bh_hzcode();
_put_bh_to_array();
}
else
{
PostMessage(g_hImeWnd, MSG_IME_CLOSE, 0, 0);
}
return TRUE;
}
return FALSE;
}
static BOOL _proc_hw_key_press(unsigned short key)
{
ST_INPUT_INFO *piinfo = &m_piinfo;
if(key >= KEY_1 && key <= KEY_9)
{
//m_nSelectPos
}
else if (key == KEY_RFUNC)
{
PostMessage(g_hImeWnd, MSG_IME_CLOSE, 0, 0);
}
return FALSE;
}
static void _proc_hz_keyup()
{
ST_INPUT_INFO *piinfo = &m_piinfo;
if (piinfo->outcode_cur == 0)
{
if (m_bHZAssn)
{
if (m_nSelectPos >= LINE_DISPLAY_MAXCOUNT)
{
m_assn_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;
m_nSelectPos = m_assn_Hz_Pos;
}
_put_assn_to_array();
}
else
{
if (m_often_Hz_Pos >= LINE_DISPLAY_MAXCOUNT)
{
m_often_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;
m_nSelectPos = m_often_Hz_Pos;
}
_put_often_to_array();
}
}
else
{
if(piinfo->hz_found_begin == piinfo->hz_found_end)
return;
if((piinfo->hz_found_cur - piinfo->hz_found_begin) > LINE_DISPLAY_MAXCOUNT * 2)
piinfo->hz_found_cur -= LINE_DISPLAY_MAXCOUNT * 2;
else
piinfo->hz_found_cur = piinfo->hz_found_begin;
m_nSelectPos = (piinfo->hz_found_cur - piinfo->hz_found_begin) / 2;
if (piinfo->keymode & IME_MODE_T9PY)
_put_py_to_array();
else if (piinfo->keymode & IME_MODE_T9BH)
_put_bh_to_array();
////else if (piinfo->keymode & IME_MODE_HANDWRITE)
//// _put_bh_to_array();
}
}
static void _proc_hz_keydown()
{
ST_INPUT_INFO *piinfo = &m_piinfo;
if (piinfo->outcode_cur == 0) {
if (m_bHZAssn)
{
if (m_assn_Hz_Pos + LINE_DISPLAY_MAXCOUNT < g_pstAssnArray[m_nAssnSelectIndex].nCounts)
{
m_assn_Hz_Pos += LINE_DISPLAY_MAXCOUNT;
m_nSelectPos = m_assn_Hz_Pos;
}
_put_assn_to_array();
}
else
{
if (m_often_Hz_Pos + LINE_DISPLAY_MAXCOUNT < OFTEN_COUNT)
{
m_often_Hz_Pos += LINE_DISPLAY_MAXCOUNT;
m_nSelectPos = m_often_Hz_Pos;
}
_put_often_to_array();
}
}
else
{
if(piinfo->hz_found_begin == piinfo->hz_found_end)
return;
if((piinfo->hz_found_end - piinfo->hz_found_cur) > LINE_DISPLAY_MAXCOUNT * 2)
{
piinfo->hz_found_cur += LINE_DISPLAY_MAXCOUNT * 2;
m_nSelectPos = (piinfo->hz_found_cur - piinfo->hz_found_begin) / 2;
}
if (piinfo->keymode & IME_MODE_T9PY)
_put_py_to_array();
else if (piinfo->keymode & IME_MODE_T9BH)
_put_bh_to_array();
////else if (piinfo->keymode & IME_MODE_HANDWRITE)
//// _put_bh_to_array();
}
}
static void _proc_hz_keyleft()
{
ST_INPUT_INFO *piinfo = &m_piinfo;
m_nSelectPos = (m_nSelectPos == 0) ? 0 : m_nSelectPos - 1;
if (piinfo->outcode_cur == 0)
{
if (m_bHZAssn)
{
if (m_nSelectPos < m_assn_Hz_Pos)
m_assn_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;
_put_assn_to_array();
}
else
{
if (m_nSelectPos < m_often_Hz_Pos)
m_often_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;
_put_often_to_array();
}
}
else
{
if(piinfo->hz_found_begin == piinfo->hz_found_end)
return;
if(m_nSelectPos < (piinfo->hz_found_cur - piinfo->hz_found_begin) / 2)
piinfo->hz_found_cur -= LINE_DISPLAY_MAXCOUNT * 2;
if (piinfo->keymode & IME_MODE_T9PY)
_put_py_to_array();
else if (piinfo->keymode & IME_MODE_T9BH)
_put_bh_to_array();
////else if (piinfo->keymode & IME_MODE_HANDWRITE)
//// _put_bh_to_array();
}
}
static BOOL _proc_hz_keyright()
{
ST_INPUT_INFO *piinfo = &m_piinfo;
m_nSelectPos++;
if (piinfo->outcode_cur == 0)
{
if (m_bHZAssn)
{
if (m_nSelectPos > g_pstAssnArray[m_nAssnSelectIndex].nCounts - 1)
m_nSelectPos = g_pstAssnArray[m_nAssnSelectIndex].nCounts - 1;
if (m_nSelectPos >= m_assn_Hz_Pos + LINE_DISPLAY_MAXCOUNT)
m_assn_Hz_Pos += LINE_DISPLAY_MAXCOUNT;
_put_assn_to_array();
}
else
{
if (m_nSelectPos > OFTEN_COUNT - 1)
m_nSelectPos = OFTEN_COUNT - 1;
if (m_nSelectPos >= m_often_Hz_Pos + LINE_DISPLAY_MAXCOUNT)
m_often_Hz_Pos += LINE_DISPLAY_MAXCOUNT;
_put_often_to_array();
}
}
else
{
if(piinfo->hz_found_begin == piinfo->hz_found_end)
return FALSE;
if (m_nSelectPos >=(piinfo->hz_found_end - piinfo->hz_found_begin) / 2)
m_nSelectPos = (piinfo->hz_found_end - piinfo->hz_found_begin) / 2 - 1;
if(m_nSelectPos >= ((piinfo->hz_found_cur - piinfo->hz_found_begin) / 2) + 10)
piinfo->hz_found_cur += LINE_DISPLAY_MAXCOUNT * 2;
if (piinfo->keymode & IME_MODE_T9PY)
_put_py_to_array();
else if (piinfo->keymode & IME_MODE_T9BH)
_put_bh_to_array();
////else if (piinfo->keymode & IME_MODE_HANDWRITE)
//// _put_bh_to_array();
}
}
static BOOL _proc_hz_key_press(unsigned short key)
{
ST_INPUT_INFO *piinfo = &m_piinfo;
if (piinfo->keymode & IME_MODE_T9PY)
{
if (_proc_py_key_press(key) == TRUE)
return 1;
}
else if (piinfo->keymode & IME_MODE_T9BH)
{
if (_proc_bh_key_press(key) == TRUE)
return 1;
}
else if (piinfo->keymode & IME_MODE_HANDWRITE)
{
if (_proc_hw_key_press(key) == TRUE)
return 1;
}
switch(key)
{
//case KEY_XING:
// {
// _Backspace();
// return 1;
// }
// break;
case KEY_UP:
_proc_hz_keyup();
break;
case KEY_DOWN:
_proc_hz_keydown();
break;
case KEY_LEFT:
_proc_hz_keyleft();
break;
case KEY_RIGHT:
_proc_hz_keyright();
break;
case KEY_RFUNC:
if (piinfo->outcode_cur == 0) // || piinfo->outcode_cur == 100 /* =100 为手写输入 */)
PostMessage(g_hImeWnd, MSG_IME_CLOSE, 0, 0);
break;
default:
return FALSE;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
static BOOL _proc_keydown(int nCharKey)
{
if ( m_piinfo.keymode & IME_MODE_T9PY
|| m_piinfo.keymode & IME_MODE_T9BH
|| m_piinfo.keymode & IME_MODE_HANDWRITE
)
{
if (_proc_hz_key_press(nCharKey) == TRUE)
{
InvalidateRect (g_hImeWnd, NULL, TRUE);
return 1;
}
else
{
if (nCharKey == KEY_0)
{
nCharKey = ' ';
_PostChar2Edit((char*)&nCharKey, 1);
return 1;
}
}
}
else if ( (m_piinfo.keymode & IME_MODE_ALPHABET_LOW) || (m_piinfo.keymode & IME_MODE_ALPHABET_UP) )
{
unsigned char sChars = _proc_en_key_press(nCharKey);
if (sChars > 0)
_PostChar2Edit((char *)&sChars, 1);
else
{
if (nCharKey == KEY_0)
{
nCharKey = ' ';
_PostChar2Edit((char*)&nCharKey, 1);
return 1;
}
else if (nCharKey == KEY_RFUNC)
{
PostMessage(g_hImeWnd, MSG_IME_CLOSE, 0, 0);
return 1;
}
}
}
else if (m_piinfo.keymode & IME_MODE_NUMBER)
{
if (nCharKey >= KEY_0 && nCharKey <= KEY_9)
{
_PostChar2Edit((char*)&nCharKey, 1);
return 1;
}
//else if (nCharKey == KEY_XING)
//{
// _Backspace();
// return 1;
//}
else if (nCharKey == KEY_RFUNC)
{
PostMessage(g_hImeWnd, MSG_IME_CLOSE, 0, 0);
return 1;
}
}
else if (m_piinfo.keymode & IME_MODE_SYMBOL)
{
switch(nCharKey)
{
//case KEY_XING:
// _Backspace();
// return 1;
// break;
case KEY_RFUNC:
PostMessage(g_hImeWnd, MSG_IME_CLOSE, 0, 0);
return 1;
break;
case KEY_0:
nCharKey = ' ';
_PostChar2Edit((char*)&nCharKey, 1);
return 1;
break;
/*
case KEY_1:
case KEY_2:
case KEY_3:
case KEY_4:
case KEY_5:
case KEY_6:
case KEY_7:
case KEY_8:
case KEY_9:
m_nSelectPos = (m_nSymbolPage * LINE_DISPLAY_MAXCOUNT) + nCharKey - KEY_1;
nCharKey = KEY_LFUNC;
//_PostChar2Edit((char*)&nCharKey, 1);
//return 1;
break;
*/
default:
break;
}
}
InvalidateRect (g_hImeWnd, NULL, TRUE);
switch(nCharKey)
{
case KEY_1:
if (!(m_piinfo.keymode & IME_MODE_NUMBER))
{
if (_GetModeEnable(IME_MODE_SYMBOL))
{
_SwitchVariable();
m_bHZAssn = FALSE;
m_piinfo.keymode = IME_MODE_SYMBOL;
}
}
break;
case KEY_LFUNC:
if (m_piinfo.keymode & IME_MODE_ALPHABET_UP || m_piinfo.keymode & IME_MODE_ALPHABET_LOW)
{
char cAlphabet = _proc_en_key_press(0);
_PostChar2Edit((char*)&(cAlphabet), 1);
}
else if (m_piinfo.keymode & IME_MODE_SYMBOL)
{
_PostChar2Edit((char*)&(array_symbol [m_nSelectPos]), 1);
m_nSymbolPage = 0;
m_nSelectPos = 0;
}
else if ( (m_piinfo.keymode & IME_MODE_T9PY) || (m_piinfo.keymode & IME_MODE_T9BH)
|| (m_piinfo.keymode & IME_MODE_HANDWRITE) )
{
_PostChar2Edit((char*)&(key_arrary_hz_select[m_nSelectPos % LINE_DISPLAY_MAXCOUNT]), 2);
_SwitchVariable();
}
break;
case KEY_UP:
if (m_piinfo.keymode & IME_MODE_SYMBOL)
{
m_nSymbolPage--;
if (m_nSymbolPage < 0)
m_nSymbolPage = 0;
else
m_nSelectPos -= LINE_DISPLAY_MAXCOUNT;
}
break;
case KEY_DOWN:
if (m_piinfo.keymode & IME_MODE_SYMBOL)
{
int k = sizeof(array_symbol) / LINE_DISPLAY_MAXCOUNT;
m_nSymbolPage++;
if (m_nSymbolPage > k)
m_nSymbolPage = k;
else
m_nSelectPos += LINE_DISPLAY_MAXCOUNT;
}
break;
case KEY_LEFT:
if (m_piinfo.keymode & IME_MODE_SYMBOL) {
m_nSelectPos = (m_nSelectPos == 0) ? 0 : m_nSelectPos - 1;
if (m_nSelectPos < m_nSymbolPage * LINE_DISPLAY_MAXCOUNT) {
m_nSymbolPage --;
}
}
break;
case KEY_RIGHT:
if (m_piinfo.keymode & IME_MODE_SYMBOL)
{
m_nSelectPos ++;
if (m_nSelectPos > sizeof(array_symbol) - 1)
{
m_nSelectPos = sizeof(array_symbol) - 1;
}
if (m_nSelectPos > (m_nSymbolPage + 1) * LINE_DISPLAY_MAXCOUNT -1) {
m_nSymbolPage ++;
}
}
break;
////#ifdef IME_HANDWRITE_ENABLE
//// case XM_POINTERDOWN:
//// if (m_piinfo.keymode & IME_MODE_HANDWRITE)
//// {
//// m_bHWSelect = FALSE;
//// return 1;
//// }
//// break;
//// case KEY_XING:
//// if (m_piinfo.keymode & IME_MODE_HANDWRITE)
//// {
//// g_nHWHZCount = 0;
//// }
//// break;
////#endif
case KEY_JING:
_SwitchVariable();
m_piinfo.keymode = _GetNextMode(m_piinfo.keymode);
if ( m_piinfo.keymode & IME_MODE_T9PY
|| m_piinfo.keymode & IME_MODE_T9BH
|| m_piinfo.keymode & IME_MODE_HANDWRITE
)
{
m_bHZAssn = FALSE;
_put_often_to_array();
}
break;
default:
return 0;
}
return 1;
}
static void _refresh_input_method_area(HWND hwnd, HDC hDC)
{
RECT rc;
GetClientRect (hwnd, &rc);
if (m_piinfo.keymode & IME_MODE_HANDWRITE)
{
DisabledTextOutEx (hDC, hwnd, METHODAREA_XPOS, METHODAREA_YPOS, "【手】");
//if (!GetHWSelect())
//{
// //Show_HWInput_page(g_hImeWnd);
//}
_Draw_Select_HZ(hDC);
}
else if (m_piinfo.keymode & IME_MODE_T9PY)
{
DisabledTextOutEx (hDC, hwnd, METHODAREA_XPOS, METHODAREA_YPOS, "【拼】");
_XorPyList(hDC);
_Draw_Select_HZ(hDC);
}
else if (m_piinfo.keymode & IME_MODE_T9BH)
{
DisabledTextOutEx (hDC, hwnd, METHODAREA_XPOS, METHODAREA_YPOS, "【笔】");
_XorBhList(hDC);
_Draw_Select_HZ(hDC);
}
else if (m_piinfo.keymode & IME_MODE_ALPHABET_UP)
{
DisabledTextOutEx (hDC, hwnd, METHODAREA_XPOS, METHODAREA_YPOS, "【EN】");
_Draw_EN_AlphaList(hDC);
}
else if (m_piinfo.keymode & IME_MODE_ALPHABET_LOW)
{
DisabledTextOutEx (hDC, hwnd, METHODAREA_XPOS, METHODAREA_YPOS, "【en】");
_Draw_EN_AlphaList(hDC);
}
else if (m_piinfo.keymode & IME_MODE_NUMBER)
{
DisabledTextOutEx (hDC, hwnd, METHODAREA_XPOS, METHODAREA_YPOS, "【数】");
}
else if (m_piinfo.keymode & IME_MODE_SYMBOL)
{
DisabledTextOutEx (hDC, hwnd, METHODAREA_XPOS, METHODAREA_YPOS, "【符】");
_DrawSymbolKeyPad(hDC);
}
}
int JYInputWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
//...
HDC hdc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -