关于微软拼音输入法的问题,各位多多帮忙!!! 当输入时会出现一个Candidate Window就是将所有同音字列出来的窗口,按上下键可以移动光标选字或词。我要在自己的程序中得到光标选中的字或词。移动光标时会发出IMN_CHANGECANDIDATE消息,我已经在hook中截获了,可是如何得到选中的字或词呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不就是選詞嘛!我幫你up呵呵gz 是不是可以得到当前所选字的index 然后再在该组字中获得文字或词组. 给你一个链接,也许对你有帮助哦http://msdn.microsoft.com/library/default.asp?url=/library/en-us/appendix/hh/appendix/imeimes_0h2s.asp 我知道了,用findwindow()找到Candidate Window的窗口句斌,用spy++一層層的找到你要的那一欄,就可以得到了你想要的東西了,還有就是,要用消息來獲得字符,用別的方法行不通! GetCapurePos或者差不多的函数在CWND类中获得位置,SetCap..设置位置或者查一下CWnd::GetCaretPos() 我查了一下有着两个函数是关于Candidate的,ImmGetNumCandidateList();ImmGetCandidateList();不过好像得到的都是数值方面的东东,没有字符串 呵呵,又是这种问题,怎么最近好像很多人对输入法感兴趣阿,如果早一年就好了,可以一起探讨探讨。关键在看你要得到的输入法是否本进程的,如果是则可以通过IMM接口得到候选窗口字串如果非本进程中,还是用屏幕取词做吧 是呀,好像鼠标取词中的fly window并不能导致那个窗口刷新。 有必要用hook吗?你自己创建的窗口,很容易得到窗口信息吧!窗口的显示也是你自己定。这样的话…… 你需要把屏幕取词程序改一改,每次Invalidata整个窗口你就可以得到候选窗口中的一系列字串如:1.我2.沃3.握4.卧5.沃.....然后再根据你的需要从中选取吧 sinhighly: 我得到了候选窗口的句柄,可是调用::InvalidateRect()总是失败。我试了试::GetWindowRect(),也是不成。 嗯,好像是不知道光标在哪个位置,不过你可以不用输入法的选字方式,比如在候选窗口出现时先用注册热键将上下箭头注册为热键,这样微软拼音输入法的选字操作就不起作用了,然后你再根据收到的热键响应自己控制选字InvalidateRect不行吗?你在后面再加一句UpdateWindow试试吧 一个不错的输入法编程网站http://wwsys.51.net/ study好象www.easthot.net上有个拼音输入法的源代码 我不是要输入法的代码。是要在自己的程序中得到微软拼音输入法的Candidate Window中光标选中的字或词 看来选字是不发消息的,也没必要发给谁…… 只是改变所选的字要发 WM_IME_NOTIFY. 你得到一个输入法鼠标下的字干什么? FLOAT128是否已经可用? 能否支持运算符? 核心对象句柄和其相应的句柄表索引的关系 请高手帮助呀 请问怎么实现向文本中写入int型变量? 请问如何检测某一个目录下是否已经存在指定名称的子目录? 请教高手windows桌面任务栏属性?? ADO+FlexGrid小问题。请教大狭 请问怎么在使用setup factory制作安装程序时创建SQL SERVER和ACCESS的ODBC数据源呢? 24小时学会VC++,大家给点意见? 为什么对话框的尺寸会发生变化? OnUpdateCmdUI 与 OnCommand 的区别? 请问哪里有专门介绍界面的电子书下载?
我幫你up
呵呵
gz
ImmGetNumCandidateList();
ImmGetCandidateList();
不过好像得到的都是数值方面的东东,没有字符串
关键在看你要得到的输入法是否本进程的,如果是则可以通过IMM接口得到候选窗口字串
如果非本进程中,还是用屏幕取词做吧
如:
1.
我
2.
沃
3.
握
4.
卧
5.
沃
.....
然后再根据你的需要从中选取吧
我得到了候选窗口的句柄,可是调用::InvalidateRect()总是失败。我试了试::GetWindowRect(),也是不成。
比如在候选窗口出现时先用注册热键将上下箭头注册为热键,这样微软拼音输入法的选字操作就不起作用了,然后你再根据收到的热键响应自己控制选字InvalidateRect不行吗?你在后面再加一句UpdateWindow试试吧
好象www.easthot.net上有个拼音输入法的源代码