Mauscoursor ändern



  • Ja wa? Sah geil aus! Aber heut mal nicht. 😉 😃



  • eigener cursor wie folgt...

    - im bildeditor eine neue resourcendatei (*.res) erstellen
    - in unbekannt1.res rechtsklicken auf 'Inhalte'
    - 'Neu' - 'Cursor' auswählen
    - doppelklichen auf Cursor1 und den eigenen cursor zeichnen
    - Cursor1 ist der name des cursors im programm der bei LoadCursor
    angegeben werden muss
    - folgenden code im programm noch

    //---------------------------------------------------------------------------
    
    const TCursor crMyCursor = 1;
    
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      // cursor laden
      Screen->Cursors[crMyCursor] = LoadCursor(HInstance, "Cursor1");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      // anzeigen
      Screen->Cursor = crMyCursor;
    }
    //---------------------------------------------------------------------------
    


  • Und wenn du den Cursor nicht aus einer Resource sondern aus nem File laden willst, dann benutzt du genau an der Stelle, wo Sunday LoadCursor() benutzt die Funktion LoadImage().



  • Vielen dank an euch 🙂



  • Klappt noch nicht ganz.
    Was ist daran falsch?

    Screen->Cursors = LoadImage(HInstance, "1.bmp");

    "Zu wenige Paramter im Aufruf..." 😕



  • Also, ums ganz richtig zu machen:

    const TCursor crEigenerCursor = 1;
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        Screen->Cursors[crEigenerCursor] = LoadImage(HInstance, ".\\Cursor1.cur", IMAGE_CURSOR, 0, 0, LR_LOADFROMFILE);
        Screen->Cursor = crEigenerCursor;
    
    }
    

    Schau auch mal in der Win32SDK-Hilfe nach, dort stehen die ganzen Parameter zu LoadImage() beschrieben.



  • Wo ist denn da die Pfadangabe zur bmp datei? 😕



  • Augen auf!

    LoadImage(HInstance, ".\\Cursor1.cur", IMAGE_CURSOR, 0, 0, LR_LOADFROMFILE);



  • und da kann ich einfach auch eine datei mit bmp endung einsetzen?



  • Jaaa 🙄

    LoadImage(HInstance, "c:\\irgendeinpfad\\deinXXXXXXcursor.bmp", IMAGE_BITMAP , 0, 0, LR_LOADFROMFILE);

    Steht alles in BCB->Hilfe->WindowsSDK



  • Dankeschön F98 😃 😉



  • Hä? Geht es jetzt um Cursors oder Bitmaps? Gast, präzisiere deine Frage. Wenn du LoadImage mit IMAGE_BITMAP verwendest, kommt da kein Cursor sondern ein Bitmap raus! Bzw. ein HBITMAP, also ein Handle auf ein Bitmap.



  • *heul*

    Ich versuche jetzt ganz genau zu beschreiben was passiert ist:
    ich habe deinen code fast 1:1 übernommen, nur hier habe ich etwas verändert:

    Screen->Cursors[crEigenerCursor] = LoadImage(HInstance, "1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

    Liegt da der Fehler? Beim Buttondrücken ist nichts passiert, "1.bmp" lag im selben ordner wie die exe.
    Dann hab ich das ganze in OnCreate gepackt, dann hat er die Form geladen es kam eine Sanduhr welche erst wieder verschwand wenn man die form mit dem mauszeiger kurz verlassen hat.
    Dann ist mein Rechner abgestürzt ( sch... Internet Explorer ...), nun kommt andauernd ein Fehler wenn ich ein neues Projekt speichern und compilieren will:

    " /* TCustomForm.Create / inline __fastcall virtual TForm(Classes::TComponent AOwner) : TCustomForm(
    AOwner) { }"

    Darauf ist ein Pfeil gerichtet, Fehlermeldung:

    "Fehler beim Lesen von Form1->OnKeyDown. Ungültiger Wert der Eigenschaft".

    Dabei hab ich onkeydown heute gar nicht benutzt... 😞



  • Siehe mein letzter Beitrag.



  • d.h. ich muss das doch mit cur machen und alle objekte nochmals speichern und umbennenn?!



  • ja.



  • Nochmal danke, allerdings wirft das wieder Probleme auf:

    Ich dachte man könne einfach von außen bmps ins programmladen und als cursor ausgeben 😞
    So stehe ich wieder vor den selben Problemen:

    Wie kann ich einen größeren Cursor zeichnen als 30x30 und in 256+ Farben?
    Gar nicht? Muss ich eine andere Lösung wählen?



  • Soweit ich weiß haben Cursors eine maximale Größe von 32x32 Pxls.


Anmelden zum Antworten