rise.worlds
01-03-2010 03:04:01
How can OIS support IME input, or other solution?

rise.worlds
01-03-2010 03:04:01
Altren
01-03-2010 14:15:49
rise.worlds
02-03-2010 02:20:25
Altren
02-03-2010 12:01:43
rise.worlds
03-03-2010 01:08:10
rise.worlds
04-03-2010 03:10:17
rise.worlds
08-03-2010 08:32:57
case WM_CHAR:
{
base::BaseManager *baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWL_USERDATA);
if (baseManager)
{
if (wParam >> 8)
{
char mb[2] = {0};
mb[0] = (wParam >> 8) & 0xFF;
mb[1] = (wParam & 0xFF);
wchar_t wb = 0;
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char*)(mb), 2, &wb, 1);
baseManager->getGUI()->injectKeyPress(MyGUI::KeyCode::None, wb);
}
else
baseManager->getGUI()->injectKeyPress(MyGUI::KeyCode::None, wParam);
}
break;
}
case WM_KEYDOWN:
case WM_KEYUP:
{
base::BaseManager *baseManager = (base::BaseManager*)GetWindowLongPtr(hWnd, GWL_USERDATA);
if (baseManager)
{
MyGUI::KeyCode key = MyGUI::KeyCode::None;
switch(wParam)
{
case VK_BACK:
key = MyGUI::KeyCode::Backspace;
break;
case VK_TAB:
key = MyGUI::KeyCode::Tab;
break;
case VK_RETURN:
key = MyGUI::KeyCode::Return;
break;
case VK_SHIFT:
key = MyGUI::KeyCode::LeftShift;
break;
case VK_LSHIFT:
key = MyGUI::KeyCode::LeftShift;
break;
case VK_RSHIFT:
key = MyGUI::KeyCode::RightShift;
break;
case VK_MENU:
case VK_LMENU:
key = MyGUI::KeyCode::LeftAlt;
break;
case VK_RMENU:
key = MyGUI::KeyCode::RightAlt;
break;
case VK_PAUSE:
key = MyGUI::KeyCode::Pause;
break;
case VK_ESCAPE:
key = MyGUI::KeyCode::Escape;
break;
//case VK_SPACE:
// key = MyGUI::KeyCode::Space;
// break;
case VK_END:
key = MyGUI::KeyCode::End;
break;
case VK_HOME:
key = MyGUI::KeyCode::Home;
break;
case VK_LEFT:
key = MyGUI::KeyCode::ArrowLeft;
break;
case VK_UP:
key = MyGUI::KeyCode::ArrowUp;
break;
case VK_RIGHT:
key = MyGUI::KeyCode::ArrowRight;
break;
case VK_DOWN:
key = MyGUI::KeyCode::ArrowDown;
break;
case VK_INSERT:
key = MyGUI::KeyCode::Insert;
break;
case VK_DELETE:
key = MyGUI::KeyCode::Delete;
break;
case VK_LWIN:
key = MyGUI::KeyCode::LeftWindows;
break;
case VK_RWIN:
key = MyGUI::KeyCode::RightWindow;
break;
}
if (uMsg == WM_KEYDOWN)
{
baseManager->getGUI()->injectKeyPress(key);
}
else
{
baseManager->getGUI()->injectKeyRelease(key);
}
}
break;
}