Ik wil graag een On Screen Display maken in Delphi. Dit lukt al voor 90 %.
Ik krijg er alleen geen Tekst op te zien.
Code is als volgt:
Borderstyle = bsNone
FormStyle = fsStayOnTop
Ik krijg nu een lichgrijs form te zien. Deze blijft On Top en ik kan er doorheen klikken en typen.
Tot zover prima.
Maar ik zie de text van DrawText niet.

Ik heb al verschillende voorbeelden gezien. (Er zijn niet echt veel te vinden)
Ik weet echt niet waar het fout gaat. Iemand hier ervaring mee?
Ik krijg er alleen geen Tekst op te zien.
Code is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| //Declaraties
const
WS_EX_LAYERED = $80000;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte;
dwFlags:longint ):longint; stdcall; external
// Functies
procedure Tfrm_OSD.FormCreate(Sender: TObject);
var
L : Longint;
begin
Application.OnMessage := Pr_Appmessage;
L := GetWindowLong(Handle, GWL_EXSTYLE);
SetWindowLong (Handle, GWL_EXSTYLE, L Or WS_EX_LAYERED Or WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(Handle, 0, 180, 1);
end;
Procedure Tfrm_OSD.Pr_Appmessage(var Msg: TMsg; var Handled: Boolean);
Var
DC : HDC;
PS : TPAINTSTRUCT;
Rect : TRect;
Begin
Handled := FALSE;
Case Msg.message Of
WM_PAINT: Begin
DC := BeginPaint(Handle, PS);
SetTextColor(DC, RGB(255,0,0));
GetWindowRect(Handle, Rect);
Rect.Left := Rect.Left + 10;
Rect.Top := Rect.Top + 10;
SetBkMode(DC, TRANSPARENT);
DrawText(DC, 'TEST', 4, Rect, DT_LEFT);
EndPaint(Handle, PS);
End;
End;
End; |
Borderstyle = bsNone
FormStyle = fsStayOnTop
Ik krijg nu een lichgrijs form te zien. Deze blijft On Top en ik kan er doorheen klikken en typen.
Maar ik zie de text van DrawText niet.
Ik heb al verschillende voorbeelden gezien. (Er zijn niet echt veel te vinden)
Ik weet echt niet waar het fout gaat. Iemand hier ervaring mee?
