输入法问题

lee_鹿游原 2011-12-19 06:10:29
我建了一个窗口,在当前窗口切换搜狗输入法时。我再按下键盘,就出现搜狗输入状态... 怎么取消或屏蔽?相关函数
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2011-12-20
  • 打赏
  • 举报
回复
HIMC hIMC;

hIMC = ImmAssociateContext(hWnd, NULL); // It makes IME disable for
// hWnd window.

// Then you can do whatever you want without IME.

ImmAssociateContext(hWnd, hIMC); // If you want to enable
// IME again, then you can
// use the previous stored IME
// context(hIMC)
// to restore IME.
shen_wei 2011-12-20
  • 打赏
  • 举报
回复
HIMC WINAPI ImmCreateContext(void);
看源码有这个函数,你可以试试。。。

本人找不到 Coreimm.lib,没有办法测试。。
lee_鹿游原 2011-12-19
  • 打赏
  • 举报
回复
那怎么恢复汉字输入
lee_鹿游原 2011-12-19
  • 打赏
  • 举报
回复
ImmAssociateContext(this->m_hWnd, NULL);把我的中文输入给屏蔽了.. 那我想恢复怎么办?
schlafenhamster 2011-12-19
  • 打赏
  • 举报
回复
如果不想要汉字输入:
OnSetFocus(CWnd* pOldWnd) 中:
ImmAssociateContext(this->m_hWnd, NULL);
schlafenhamster 2011-12-19
  • 打赏
  • 举报
回复
抄来的:
// this code from ZWELL 获得输入法处理后的字符串
if(pmsg->message==WM_IME_COMPOSITION)
{
DWORD dwSize;
char lpstr[128];

if(pmsg->lParam & GCS_RESULTSTR)
{
//先获取当前正在输入的窗口的输入法句柄
hIMC = ImmGetContext(hWnd);
if(!hIMC) return 0;
// 先将ImmGetCompositionString的获取长度设为0来获取字符串大小.
dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, NULL, 0);
// 缓冲区大小要加上字符串的NULL结束符大小,
// 考虑到UNICODE
dwSize += sizeof(WCHAR);
memset(lpstr, 0, sizeof(lpstr));
// 再调用一次.ImmGetCompositionString获取字符串
ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize);
//现在lpstr里面即是输入的汉字了。你可以处理lpstr,当然也可以保存为文件...
//MessageBox(NULL, lpstr, lpstr, MB_OK);
}
}
*/
  • 打赏
  • 举报
回复
获取搜狗输入窗口句柄然后隐藏它

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧