我们有一个Delphi 2007应用程序,并最近启用了MainFormOnTaskBar以更好地支持Windows Aero。然而,因为主窗体在被点击时不能置于所有子窗体的顶部,所以我们添加了以下代码。
这样做的一个副作用是,当在没有处理特定热键的子窗体上按下Alt+键热键时,主窗体会闪到前面,然后再回来。如果处理了热键,则不会出现这种行为,可能是因为热键被吞噬了。是否有其他人经历过这种行为并能提供解决方法?
谢谢!
procedure TBaseForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := 0;
end;
这样做的一个副作用是,当在没有处理特定热键的子窗体上按下Alt+键热键时,主窗体会闪到前面,然后再回来。如果处理了热键,则不会出现这种行为,可能是因为热键被吞噬了。是否有其他人经历过这种行为并能提供解决方法?
谢谢!
MainFormOnTaskbar
为真时,您不需要像那样覆盖CreateParams()
。基本实现已经为您设置了相同的值。单击MainForm
应该在单击时将其置于顶部,这是正常的窗口行为。 - Remy LebeauCreateParams()
以打破该所有权。 - Remy Lebeau