Pregunta

El uso de Delphi que le gustaría añadir otro botón a la frontera icono de botones; estrecha, maximizar, minimizar. Cualquier ideas sobre cómo hacer esto?

¿Fue útil?

Solución

Esto era fácil de hacer antes de Aero de Windows. Simplemente tenía que escuchar los mensajes WM_NCPAINT y WM_NCACTIVATE para dibujar en la parte superior de la barra de título, y de manera similar se puede utilizar los otros mensajes WM_NC* para responder a los clics del ratón, etc, en particular, WM_NCHITTEST, WM_NCLBUTTONDOWN y WM_NCLBUTTONUP.

Por ejemplo, para dibujar una cadena en la barra de título, sólo había que hacer

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  protected
    procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
    procedure WMNCActivate(var Msg: TWMNCActivate); message WM_NCACTIVATE;
  private
    procedure DrawOnCaption;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.WMNCActivate(var Msg: TWMNCActivate);
begin
  inherited;
  DrawOnCaption;
end;

procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
begin
  inherited;
  DrawOnCaption;
end;

procedure TForm1.DrawOnCaption;
var
  dc: HDC;
begin
  dc := GetWindowDC(Handle);
  try
    TextOut(dc, 20, 2, 'test', 4);
  finally
    ReleaseDC(Handle, dc);
  end;
end;

end.

Ahora bien, esto no funciona con Aero activado. Sin embargo, hay una manera de dibujar en la barra de título; Yo lo he hecho, pero es mucho más complicado. Ver este artículo para un ejemplo de trabajo .

Otros consejos

Chris Rolliston escribió un blog detallada acerca de la creación de una barra de título personalizado en Vista y Windows 7 .

También escribió un seguimiento artículo y código de ejemplo Enviado el CodeCentral .

Sí, establezca la propiedad estilo del borde de la forma de bsNone y poner en práctica su propia barra de título con todos los botones y la costumbre comportamiento te gusta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top