WINCE使中文输入法status window不显示的一些方法

WINCE下一般都没有键盘做为输入,所以如果要输入汉字的话,方法一是在输入法dll中弹出SIP软键盘来按键,方法二当然就是手写输入了。
我们用的是方法一,OS固化输入法后,从开机,输入法的status window就一直在,因为一直都有IMN_OPENSTATUSWINDOW消息通知输入法DLL打开status window。
这时就要想法隐藏掉tatus window了,
方法一:
HIMC ImmAssociateContext(
  HWND hWnd,
  HIMC hIMC
);
在OnInitDialog或初始化窗口时调用ImmAssociateContext(GetSafeHwnd(), NULL); 把hIMC置空,可以隐藏该窗口的status window。
方法二:
BOOL ImmDisableIME(
  DWORD idThread
);
ImmDisableIME在WINCE下参数只能用0。ImmDisableIME(0);
该方法使该进程内都禁用输入法,而不像方法一是使一个窗口不用输入法。
要注意的是:ImmDisableIME要在该进程创建任何窗口前调用才会成功。所以一个好地方是CWinApp的InitInstance。

不知道有没有这样的方法,让WINCE一开机,没有输入法窗口,到我要用输入法时能调出输入法窗口,好象这样才是最好的办法。

另外windows禁用IME的情况,可能是一个edit或某些edit禁用IME,这样的解决方法是:
http://topic.csdn.net/t/20050913/19/4267382.html
HIMC   m_hImc;         //   全局或者成员变量  
   
//   Function   for   Disabling   IME  
void   CMyDialog::DisableIME()  
{  
  HWND   hWnd   =   GetDlgItem(IDC_EDIT1)->m_hWnd;  
  if   (hWnd   &&   IsWindow(hWnd))  
  {  
   //   Get   input   context   for   backup.    
   m_hImc   =   ImmGetContext(hWnd);  

   //   Remove   association   the   testing    
   if   (m_hImc)  
   ImmAssociateContext(hWnd,   NULL);  

   //   Release   input   context  
   ImmReleaseContext(hWnd,   m_hImc);  
   ::SetFocus(hWnd);  
  }  
}  


//   Function   for   Enabling   IME  
void   CMyDlg::EnableIME()    
{  
  HWND   hWnd   =   GetDlgItem(IDC_EDIT1)->m_hWnd;  
  if   (hWnd   &&   IsWindow(hWnd))  
  {  
  //   Enable   IME  
  if   (m_hImc)  
  {  
   //   Associate   the   input   context   with   testing   window  
   ImmAssociateContext(hWnd,   m_hImc);  
   m_hImc   =   NULL;  
  }  

  ::SetFocus(hWnd);  
  }  

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/albertkong/archive/2009/06/06/4244426.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值