查看: 3601|回复: 6

MYGUI结合进OSG怎么输入中文?

[复制链接]

该用户从未签到

发表于 2012-10-9 09:05:18 | 显示全部楼层 |阅读模式
我参照osgRecipes的例子将OSG3.0.1和MyGUI3.2.0结合一起,但是貌似无法输入中文,不知道该如何改?请问有人知道怎么样子添加中文输入支持吗?

该用户从未签到

发表于 2012-10-9 15:01:20 | 显示全部楼层
中文是IME的事情了,可以自己在EventHandler里面实现,也可以预先给窗口设置好MsgProc并且在其中处理IME事件

该用户从未签到

发表于 2012-10-10 07:54:30 | 显示全部楼层

该用户从未签到

 楼主| 发表于 2012-10-10 10:44:31 | 显示全部楼层
多谢两位了,我试试看。

该用户从未签到

 楼主| 发表于 2012-10-15 13:33:16 | 显示全部楼层
已经完全搞定了,因为是用的C#调用OSG+MYGUI
具体步骤:
1.在C#窗体内添加中文输入法切换
  1. virtual System::Void  WndProc(Message% m) override
  2.                 {
  3.                         if(m.Msg==WM_IME_SETCONTEXT && m.WParam.ToInt32() == 1)
  4.                                 ImmAssociateContext((HWND)Handle.ToInt32(),_hIMC);
  5.                         if(m.Msg==WM_CHAR && m.LParam.ToInt32() == 1)
  6.                         {
  7.                                 test(m.WParam.ToInt32());
  8.                         }
  9.                         System::Windows::Forms::Form::WndProc(m);
  10.                 }
复制代码
2.test方法
  1.         void MainForm::test(int w)
  2.         {
  3.                 osg::ref_ptr<UserData> obj = new UserData;
  4.                 obj->setData(w);
  5.                 double eventTime = _viewer->getEventQueue()->getTime();
  6.                 _viewer->getEventQueue()->userEvent(obj.get(),eventTime);
  7.         }
复制代码
3.MYGUIManager里面添加
  1. case osgGA::GUIEventAdapter::USER:
  2.                                 {
  3.                                         UserData* userDate= (UserData*)(ea.getUserData());
  4.                                         if(userDate->getStatus()==SHH3D::UserData::Status::ImmInfo)
  5.                                                 _bHanlded = MyGUI::InputManager::getInstance().injectKeyPress(MyGUI::KeyCode::None ,(MyGUI::Char)(userDate->getData()));
  6.                                         break;
  7.                                 }
复制代码
8F`86Z$@KT5}8A[B~FM59CM.jpg

PS:如果不是C#窗体调用,因为可以切换输入法,所以可直接添加 case WM_IME_CHAR :

该用户从未签到

发表于 2012-10-15 16:19:22 | 显示全部楼层
不错哦

该用户从未签到

发表于 2012-10-16 10:08:01 | 显示全部楼层
谢谢分享~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表