如何创建一个像Windows 7 Notifications Flyouts的窗口,(WS_THICKFRAME但不可调整)

Vit*_*.us 7 delphi winapi resizable windows-7 flyout

我刚刚在Delphi 7中制作了一个小应用程序,它模拟了默认的系统图标,如音量,电池,时钟,网络.

我正在尝试遵循所有Microsoft的建议http://msdn.microsoft.com/en-us/library/aa511448.aspx#flyouts

为了使窗口看起来像弹出窗口,我正在使用此代码:

//declaration

TForm1 = class(TForm)

protected
  procedure CreateParams(var Params: TCreateParams); override;
end;
Run Code Online (Sandbox Code Playgroud)

履行

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := WS_POPUP or WS_THICKFRAME;
  Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST;
end;
Run Code Online (Sandbox Code Playgroud)

我的问题是WS_THICKFRAME允许用户调整窗口大小.我怎样才能解决这个问题?

可调整窗口问题

Ben*_*igt 6

您可以通过处理WM_GETMINMAXINFO来阻止调整大小.

但是,这不会阻止调整大小光标的使用.为此,你可以处理WM_NCHITTEST.