Статьи
|
Сообщение WM_NCPAINT посылается окну, когда требуется перекрасить его рамку. Приложение может прервать это сообщение и рисовать свою собственную рамку.
Обратите внимание: Вы также должны обработать сообщение WM_NCACTIVATE, которое посылается окну, когда оно активируется или деактивируется. Без обработки сообщения WM_NCACTIVATE наш текст в заголовке исчез бы, когда наша форма потеряет фокус.
type
TCustomCaptionForm = class(TForm)
private
procedure WMNCPaint(var Msg: TWMNCPaint) ;
message WM_NCPAINT;
procedure WMNCACTIVATE(var Msg: TWMNCActivate) ;
message WM_NCACTIVATE;
procedure DrawCaptionText() ;
end;
{ ... }
implementation
procedure TCustomCaptionForm .DrawCaptionText;
const
captionText = 'Test Caption';
var
canvas: TCanvas;
begin
canvas := TCanvas.Create;
try
canvas.Handle := GetWindowDC(Self.Handle) ;
with canvas do
begin
Brush.Style := bsClear;
Font.Color := clMaroon;
TextOut(Self.Width - 110, 6, captionText) ;
end;
finally
ReleaseDC(Self.Handle, canvas.Handle) ;
canvas.Free;
end;
end;
procedure TCustomCaptionForm.WMNCACTIVATE(var Msg: TWMNCActivate) ;
begin
inherited;
DrawCaptionText;
end;
procedure TCustomCaptionForm.WMNCPaint(var Msg: TWMNCPaint) ;
begin
inherited;
DrawCaptionText;
end;
|