奇怪的Windows Mobile输入面板刷新问题

奇怪的Windows Mobile输入面板刷新问题

这是最近弄的一个程序,其实以前在使用别的程序的时候貌似也出现过类似的问题,那就是:有些时候点击菜单栏上的输入法按钮,输入法面板却无法正常隐藏。而经过进一步研究后发现,其实并不是没有隐藏,而是没有刷新,而且不能通过常规的手段来刷新,比如调用InvalidateRect,或者“遮挡/重新调出”等常规手段。如图:

奇怪的Windows Mobile输入面板刷新问题_第1张图片

仔细看菜单栏上的“S”按钮,这是搜狗输入法的按钮,现在它应该处于关闭状态,而输入法面板却还在显示,并且,点上去无效,效果是“点击穿透”,下面这张图是输入法面板正常的情况:

奇怪的Windows Mobile输入面板刷新问题_第2张图片

这是菜单栏上的输入法按钮处于激活状态。

当出现问题的时候,你让企图通过“遮挡/重新调出”的手段让这块区域重绘,那会导致类似下面的情况,下面这张图就是我呼出开始菜单,然后又关闭开始菜单之后,得到的结果。

奇怪的Windows Mobile输入面板刷新问题_第3张图片

事实上,我的应用程序窗口确实是填满了整个客户区的,至于为什么不能正常刷新,真是令人费解。但经过大量折腾,我看起来是解决了这个问题,那就是把我窗口处理函数中的代码拿掉一点:

     case  WM_ACTIVATE:
        SHHandleWMActivate(hWnd, wParam, lParam, 
& s_sai, FALSE);
        
break ;
//     case WM_SETTINGCHANGE:
//         SHHandleWMSettingChange(hWnd, wParam, lParam, &s_sai);
//         break;

下面注释掉的代码就是我拿掉的代码,似乎这个问题就不再出现了,但为什么这样我还是不懂。而Windows Mobile开发中遇到的这种问题真是数不胜数……

你可能感兴趣的:(奇怪的Windows Mobile输入面板刷新问题)