在delphi的线程中建立一个窗口,比如ttimer(是个隐藏窗口)。然后切换输入法会导致主线程挂起,窗口冻结,尤其切换输入法系统发送的消息线程没有相应的消息处理代码。
应该在线程中加入处理消息代码就不会出现切换输入法导致主窗口冻结。
如:
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
所有线程中建立的窗口必须由线程来处理窗口的消息循环。