2013-11-28 13 views

回答

2

窗口风格,扩展和标准,是集合位标志。您已设置WS_EX_APPWINDOW扩展样式,但清除了所有其他扩展样式。你打算做的是使用按位或将WS_EX_APPWINDOW扩展样式与现有的扩展样式相结合。

ExStyle := GetWindowLong(Form.Handle, GWL_EXSTYLE); 
SetWindowLong(Form.Handle, GWL_EXSTYLE, ExStyle or WS_EX_APPWINDOW); 

但是,拨打SetWindowLong是错误的方法。 Delphi窗口可能会重新创建,并且它们在什么时候重新应用样式。因此,代码的正确位置是覆盖CreateParams方法。

procedure TMyForm.CreateParams(var Params: TCreateParams); 
begin 
    inherited; 
    Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; 
end; 

但是,设置WS_EX_APPWINDOW通常是将按钮放到任务栏上的错误方法。只要该窗口是无主窗口,它将在任务栏上有一个按钮。您可以通过在CreateParams中将MainFormOnTaskbar设置为True或将WndParent设置为0来实现。

+0

非常感谢。 – elcharlie

+0

您是否理解我关于使用'CreateParams'的观点?你是否明白我的意思可能根本不需要使用'WS_EX_APPWINDOW'? –

相关问题