Draw the caption of a TForm programmatically (Views: 709)
Problem/Question/Abstract: I need to be able to draw the text in a TForm's caption area manually, without using WM_SETTEXT (setting the TForm's Caption property, or using the API call SetWindowText, both use this method so they are unsuitable). I need functionality similar to DrawText where the text is drawn directly rather than sent to a message handler. Can anyone help? Answer: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure WMPaint(var Message: TWMPaint); message WM_PAINT; procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure WriteTexttoDC(WinHandle: HWND; Text: string; X, Y: Integer); var DC: HDC; begin DC := GetWindowDC(WinHandle); ExtTextOut(DC, 1, 1, ETO_CLIPPED, nil, PChar(Text), Length(Text), nil); ReleaseDC(WinHandle, DC); end; procedure TForm1.WMPaint(var Message: TWMPaint); begin WriteTexttoDC(Handle, 'Is it OK?', 5, 5); end; procedure TForm1.FormShow(Sender: TObject); begin WriteTexttoDC(Handle, 'Is it OK?', 5, 5); end; end. |