Anderen Mauszeiger verwenden (bei ShowModal)



  • Halli hallo, ich bins mal wieder *g*

    Diesmal geht es um Mauszeiger. Ich habe im Programm verschiedene Mauszeiger verwendet, alles klappt prima, hervorragend. Nur habe ich noch ein Problem: Ich habe auch eigene MessageBoxes, die als ShowModal() aufgerufen werden, also alles andere dahinter reagiert nichtmehr, soll's auch nicht. Nur habe ich wieder diesen Windows-Standard-Mauszeiger, wenn ich neben mein MessageBox gehe. Wie kann ich es so machen, dass der Mauszeiger auch dort anders ist (ein von mir bestimmter)? Hab schon probiert de Cursor 0 (Default-Mauszeiger) zu ersetzen, funktioniert nur im Programm selbst, bei ShowModal und nach dem Programm nicht...



  • Dafür wirst du wohl den systemweit gültigen Cursor ermitteln, ändern und nachher zurücksetzen müssen, mit der WinAPI-Funktion SetSystemCursor.
    Bei Bedarf verschiebe ich dich gern in's entsprechende Forum.



  • Ja, das wär nett... bevor ich hier nen doppelpost mache *gg*



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • So... und wie bekomm ich die ID vom Standard-Cursor bei Windows? Und wie kann ich den dann zwischenspeichern?

    Wie ich mit SetSystemCursor umzugehen habe, kann ich mir schon denken, nach den Parametern... aber wie bekomme ich die ID heraus?





  • OK, nun hab ich ein Problem: Der BCB erkennt die Konstante OCR_NORMAL nicht... oder muss ich da noch einen Header einbinden? Wenn ja, welchen?



  • Und dann hab ich noch ein Problem: Wie kann ich den Standard-Cursor von Windows zwischenspeichern? Ich find keine Methode um ihn zu kopieren...



  • MSDN schrieb:

    Declared in Winuser.h, include Windows.h

    Winuser.h schrieb:

    #define OCR_NORMAL 32512

    Warum willst Du den Standard-Cursor "zwischenspeichern"?



  • Damit ich ihn nach dem Programm zurücksetzen kann, oder muss ich das nicht?

    Als ich winuser.h eingebunden habe, hat der BCB immernoch gemeckert, mit der Meldung, dass OCR_NORMAL nicht definiert wäre...



  • Doch, muss ich... Kommt zwar cool, nach dem Programm weiterhin diesen Cursor zu behalten, aber ich denke mal, dass das nicht jeder so sehen wird *gg* Also: Wie bekomm ich ein HCURSOR-Objekt des Standardmauszeigers von Windows, damit ich das zwischenspeichern kann...?



  • OK, hab jetzt ein bischen herumprobiertund habs tatsächlich geschafft... auch, wenn's etwas umständlich ist, aber hauptsache es klappt:

    Screen->Cursor=crArrow;
        Screen->Cursors[103]=CopyCursor(GetCursor());
        Screen->Cursor=crDefault;
        SetSystemCursor(CopyCursor(Screen->Cursors[100]),32512);
        /* Hier wird das Fenster dann aufgerufen, das über ShowModal läuft */
        SetSystemCursor(CopyCursor(Screen->Cursors[103]),32512);
    

    So, vielen Dank für eure Hife. Besonderer Dank geht an flenders, wegen der Microsoft-Seite... ich hätte nie gedacht, dass die mich mal weiterbringen würde *gg*

    MfG Windoof


Anmelden zum Antworten