Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Probleme mit Handle (https://www.delphipraxis.net/19164-probleme-mit-handle.html)

wsks 30. Mär 2004 11:59


Probleme mit Handle
 
Hallo,
ich habe mit folgendem Programm das Problem, dass nach ändern der Borderstyle ein RECREATE ausgeführt wird und sich somit das HND vom Form1 ändert. Folglich gehen auch die HOTKEY'S nicht mehr.
So nun erstmal CODE:

Delphi-Quellcode:
procedure TForm1.WMHotKeyReg;
var hk_id_A :integer;
    hk_id_B :integer;
    hk_id_C :integer;
begin
  hk_id_A:=1;
  hk_id_B:=2;
  hk_id_C:=3;
  if(RegisterHotKey(Form1.Handle,hk_Id_a,0,WORD('1'))) then
  if(RegisterHotKey(Form1.Handle,hk_Id_b,0,WORD('2'))) then
  if(RegisterHotKey(Form1.Handle,hk_Id_c,0,WORD('3'))) then
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WMHotKeyReg;
end;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if(msg.HotKey = 1) then Showmessage('Taste 1');
  if(msg.HotKey = 2) then Showmessage('Taste 2');
  if(msg.HotKey = 3) then Form_Stil;
end;

procedure TForm1.form_stil;
begin
  Form1.BorderStyle:=bsSingle;
end;
Das ganze ist Teil eines grösseren Projektes und es hängen an dem HND noch mehrere Forms und CHILD'S. Ich muss also irgendwie erreichen das durch das setzen von BORDERSTYLE kein RECREATE ausgeführt wird bzw. ich das alte HND behalte.

Hat dazu jemand eine Idee?
DANKE :-D
Gruss wsks

roderich 30. Mär 2004 12:21

Re: Probleme mit Handle
 
eine (vielleicht blöde) Frage: warum gibst du die Hotkeys nicht (evtl. unsichtbaren) MenuItems und gehst damit den Handle-Problemen aus dem Weg ?

Gruß
Roderich

wsks 30. Mär 2004 12:38

Re: Probleme mit Handle
 
Das Beispeil mit den Hotkeys soll nur zeigen was passiert wenn das Form durch RECREATE ein neues HND bekommt.
Ich muss aber im Projekt öfter Borderstyle usw. ändern.
Gruss wsks

Luckie 30. Mär 2004 12:47

Re: Probleme mit Handle
 
Was isr RECREATE? Habe ich noch nie gehört. :gruebel:

Und so lange das Fenster nicht zerstört und wieder neu erzeugt wird, ändert sich auch das Handle nicht.

wsks 30. Mär 2004 13:28

Re: Probleme mit Handle
 
Korrekt ist es natürlich - RecreateWnd -
Es ist aber leider so, dass wenn der Borderstyle sich ändert Form ein neues Handle bekommt. In meinem Beispiel sind die HOTKEYS dann nicht mehr verfügbar. Bin dann der Sache nachgegangen und in Unit Forms festgestellt das nach der Änderung von z.B. Borderstyle RecreateWnd ausgeführt wird.
Gruss wsks

Luckie 30. Mär 2004 13:32

Re: Probleme mit Handle
 
Dann ruf doch danach:
Delphi-Quellcode:
Form1.BorderStyle:=bsSingle
noch mal deine HotKey-Prozedur auf.

wsks 30. Mär 2004 14:38

Re: Probleme mit Handle
 
Wie schon gesagt das mit den Hotkeys ist nur ein Beispiel. Ich brauch das Handle noch für weiter Funktionen und darf es nicht verändern durch BORDERSTYLE. Meine Idee dich ich hatte lag mehr im Bereich von:
Delphi-Quellcode:
SetWindowLong
komme aber da irgenwie nicht weiter. :?:
Gruss wsks

wsks 1. Apr 2004 06:59

Re: Probleme mit Handle
 
Delphi-Quellcode:
writeln('Hallo Welt');

:hello:
Gruss wsks


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz