子窗体显示在任务栏,且子窗体中又有弹窗(CreateParams修改三个风格参数)

子窗体显示在任务栏时,

procedure Tfrm_SendSmartMsg.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent := 0;

end;

这时子窗体会在任务栏有单独的按钮,如果这时这个子窗体上又要加一个弹出窗体,如果是普通窗体会把整个应用程序激活,而导致这个子窗体跑到后面去。

把下面一句加到这个弹窗中可解决。

procedure Tfrm_MonthCalender.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_NOACTIVATE;       //不会获取焦点
  Params.WndParent := GetDesktopWindow;                       //不会激活应用程序,但会在任务栏显示

  Params.Style := Params.Style or  WS_POPUP;              //加了这一句后不会在任务栏显示

end;

参考:http://m.blog.csdn.net/blog/fghydx/18599199

原文地址:https://www.cnblogs.com/findumars/p/4740150.html