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 Hand-Cursor benutzen? (https://www.delphipraxis.net/8332-hand-cursor-benutzen.html)

Alexander 2. Sep 2003 17:17


Hand-Cursor benutzen?
 
Hi,
ich möchte in meiner Anwendung einen HAnd-Cursor nutzen.
Der Cursor soll auf dem ganzen Bildschirm angezeigt werden.
ICh dachte bisher, dass ich das mit LoadCursor machen könnte, doch irgendwie klappt das ncith so wie ich will...
Es passiert nämlcih nichts...
Hier mal mein Versuch:
Delphi-Quellcode:
SetCursor(LoadCursor(hInstance, IDC_HAND));
Was genau habe ich falsch gemacht?
Danke schon mal :P

Duffy 2. Sep 2003 17:22

Re: Hand-Cursor benutzen?
 
Hallo alexander,
Delphi-Quellcode:
Screen.Cursor := crHandPoint;
bye

Alexander 2. Sep 2003 18:07

Re: Hand-Cursor benutzen?
 
Hehe..
Ja, aber das gilt nur innerhalb meiner Anwendung...
Ich möchte aber, dass das für den ganzen Bildschirm gilt.
Wie mache ich denn das?

PS: Das habe ich auch schon herausgefunden und mich geärgert, dass es nur für den Client-BEreich des Forms gilt...;-)

Duffy 2. Sep 2003 18:59

Re: Hand-Cursor benutzen?
 
Hallo alexander,
welchen Sinn sollte das haben? Meine Anwendung blockiert gerade das gesamte System?
bye

Alexander 2. Sep 2003 19:25

Re: Hand-Cursor benutzen?
 
Nö ich bastle mir gerade eine Art Farbpicker und ich dachte mir da kann man das Icon ganz gut für nehmen.
Wäre toll, wenn du/ihr nmir erzählen könntet, wo der fehler bei mir (oben im Code) liegt. ODer ob das ganz anders geht
DAnke schon mal ;-)

Wormid 2. Sep 2003 23:07

Re: Hand-Cursor benutzen?
 
Damit bin ich weiter gekommen als mit SetCursor...
Code:
  SetSystemCursor(Screen.Cursors[crHandPoint], OCR_NORMAL);
Allerdings ist das noch immer nicht sicher. (Wenn eine Anwendung den Cursor ändert, damm muss man noch irgendwie auf die Nachricht WM_SETCURSOR reagieren.)
Außerdem habe ich es ohne Reboot nicht hinbekommen, den Cursor wieder auf das Original zurückzusetzen. :?

Gruß

Wormid

negaH 3. Sep 2003 00:11

Re: Hand-Cursor benutzen?
 
Normalerweise wird nach Auslössen der Capturing Aktion erstmal die Maus im kompletten Desktopbereich deiner Anwednung exklusiv zugeordnet. Nun hat deine Anwendung die absolute Kontrolle über den Mousecursor.

Delphi-Quellcode:
procedure TForm1.ButtonCaptureClick(Sender: TObject);
begin
 
  SetCapture(Handle);
  Screen.Cursor := crHandPoint;
end;

procedure TForm1.FormMouseUp();
begin
  ReleaseCapture;
  Screen.Cursor := crDefault;
end;
Gruß Hagen

Alexander 3. Sep 2003 15:56

Re: Hand-Cursor benutzen?
 
Super :thuimb:
Danke Hagen, funktioniert super.

Nur eine Frage habe ich ncoh. Laut MSDN müsste das doch auch mit meinem Code funktionieren, oder, was ist daran falsch?

PS: Jetzt gibt es auch gleich das Programm in der Freeware-Sparte ;-)

negaH 3. Sep 2003 20:05

Re: Hand-Cursor benutzen?
 
Zitat:

Nur eine Frage habe ich ncoh. Laut MSDN müsste das doch auch mit meinem Code funktionieren, oder, was ist daran falsch?

Es funktioniert auch, aber nur so lange wie du die Maus nach dem SetCursor() NICHT bewegst. Bei jeder Mausbewegung wird eine wm_SetCursor Message an das Fenster unter der Maus gesendet (wenn windows per wm_NCHitTest erkennt das sich was geändert hat). In diesem, und NUR in dieser Messagebehandlung ist es sinnvoll nun SetCursor() aufzurufen. Die VCL macht das aber schon alles selber und aktiviert den Cursor der mit Control.Cursor Property eingestellt wurde. Somit ist reine Windows API Programmierung zwar nett aber durch das Verhalten der VCL wird dies alles schon abgedeckt.

Gruß Hagen

Alexander 4. Sep 2003 15:07

Re: Hand-Cursor benutzen?
 
OK.
Ich muss halt immer genau wissen, was falsch war. Sonst lernt man ja ncihts dazu.
OK. Danke!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 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