What time can support Asian language(IME) input?

rise.worlds

01-03-2010 03:04:01

How can OIS support IME input, or other solution?

:(

Altren

01-03-2010 14:15:49

IME is part of OIS, not part of MyGUI. And we not developing OIS.

rise.worlds

02-03-2010 02:20:25

Maybe I did not say it clear,Maybe I did not say clearly that the problem with this is similar.
http://www.ogre3d.org/addonforums/viewt ... 695#p26845

Altren

02-03-2010 12:01:43

Well, we already use everything that is described there. So you can input any character. And in OIS there is only very small part of IME (diacritical marks), so there is much more to do with IME and we don't have that. And IME is probably not part of GUI, so I'm not sure that we are going to implement that soon.

rise.worlds

03-03-2010 01:08:10

Well, look forward to your release a better version!
Thank you, this problem seems to only be resolved with the Win32 message(WM_CHAR/WM_IME_CHAR).

rise.worlds

04-03-2010 03:10:17

In the 3.01 release, it attracted a lot of Chinese developers.
If you adequate attention East Asian markets, I believe there will be more users to join, because they are more cumbersome to use CEGUI.

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;
}


Simple solution, and I hope my.name can be used.

mygui 3.0.1 & VS2005SP1 & Win7 & DXSDK Aug09