Probeer de parent van dat form is de desktop te maken,
Werkt voor delphi wel, dus zal voor BC++ ook moeten kunnen,
delphi code:
Delphi:
1
2
3
4
5
6
7
8
| procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do begin
ExStyle := ExStyle or WS_EX_TOPMOST;
WndParent := GetDesktopwindow;
end;
end; |
Getest en werkt hier, echter focus kan nog wel veranderd worden met alt-tab maar form blijft "ontop".
Code gejat van:
http://delphi.about.com/od/formsdialogs/l/aa073101b.htm
[edit]
Ok, stukje extra code nodig:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| procedure ForceForegroundWindow(hwnd: THandle);
// (W) 2001 Daniel Rolf
// http://www.finecode.de
// rolf@finecode.de
var
hlp: TForm;
begin
hlp := TForm.Create(nil);
try
hlp.BorderStyle := bsNone;
hlp.SetBounds(0, 0, 1, 1);
hlp.FormStyle := fsStayOnTop;
hlp.Show;
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
SetForegroundWindow(hwnd);
finally
hlp.Free;
end;
end; |
Vervolgens moet je op een of andere manier, (in delphi door Application.OnDeActivate), deze routine aanroepen met de handle van je form.
[
Voor 49% gewijzigd door
Verwijderd op 04-01-2008 13:49
]