7

ここDelphi7で、音量、バッテリー、時計、ネットワークなどのデフォルトのシステムアイコンをシミュレート する小さなアプリを作成しました。

ここですべてのMicrosoftの推奨事項に従おうとしていますhttp://msdn.microsoft.com/en-us/library/aa511448.aspx#flyouts

ウィンドウをフライアウトのように見せるために、私は次のコードを使用しています。

//declaration

TForm1 = class(TForm)

protected
  procedure CreateParams(var Params: TCreateParams); override;
end;

実装

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

私の問題は、WS_THICKFRAMEでユーザーがウィンドウのサイズを変更できることです。どうすればこれを修正できますか?

サイズ変更可能なウィンドウの問題

4

4 に答える 4

6

WM_GETMINMAXINFOを処理することで、サイズ変更を防ぐことができます。

ただし、これによってサイズ変更カーソルの使用が妨げられることはありません。そのために、あなたは扱うことができますWM_NCHITTEST

于 2011-09-14T00:46:04.003 に答える
1

WM_NCHITTESTメッセージを処理するだけで、常に値を返しHTCLIENTます。

これは、OS にとって、アプリのクライアント領域上にあることを意味します。その後、サイズ変更カーソルは表示されません。

私はWPFアプリでこのアプローチを使用しています。

于 2012-10-01T08:08:30.147 に答える