输入法的切换导致程序的卡死

xyddz 2011-08-31 04:41:07
我在一个线程中使用ADO操作数据库,目前出现以下问题:
在NT系统中用CTRL+SHIFT切换输入法会导致程序卡死,但是我用鼠标选择任务栏上的输入法不会导致程序卡死,我把使用ADO的部分删除了就不会出现这个问题,现在如何解决这个问题啊?
在XP中切换输入法不会出现问题。
...全文
369 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stjay 2011-08-31
  • 打赏
  • 举报
回复
一种可能是使用了ADO事件,创建了类名为ADODB.AsyncEventMessenger的窗口和Default IME窗口(可用spy++查看),
非英文版Windows有个IME输入法服务,输入法切换是会发IME消息到该窗口,而该线程没有消息循环,
导致界面卡死(至于具体原因嘛...,感觉应该是这样)

一般是ADO当控件用时才创建窗口(如Delphi里),VC里一般不会有。
此种情况的一种解决方法:
用SendMessage发消息到主界面,在主界面线程里动态创建(SendMessage的参数和返回值都可以用来传递对象指针)
superarhow 2011-08-31
  • 打赏
  • 举报
回复
我猜,可不可以拦截掉WM_IME_SELECT消息
叶落寒山 2011-08-31
  • 打赏
  • 举报
回复
如果非要查代码的话。建议你一点一点的放开注释掉的部分。
如果能够定位到是某行代码的话。可能更容易解决问题。现在太笼统了,都没有办法定位是哪方面的问题。



[Quote=引用 4 楼 xyddz 的回复:]
用不用NT不是我能决定的。。。。。
[/Quote]
xyddz 2011-08-31
  • 打赏
  • 举报
回复
用不用NT不是我能决定的。。。。。
叶落寒山 2011-08-31
  • 打赏
  • 举报
回复
看样子是nt系统和xp系统不同导致的。nt系统本来就是微软的一个过渡产品。可以不用nt系统呀。
xyddz 2011-08-31
  • 打赏
  • 举报
回复
用鼠标选择任务栏上的输入法不会导致程序卡死
使用ADO的部分删除了就不会出现这个问题,删除的部分也没有热键
xiaoguailong3 2011-08-31
  • 打赏
  • 举报
回复
没遇见过这种情况。觉得应该不是切换输入法的原因,会不会是程序里有热键。。你拿鼠标切换输入法看看

4,011

社区成员

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

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