dynamisch erzeugtes SpinCtrl verschwindet zum Teil wieder?



  • Hallo, mit diesem Code erstelle ich ein CButtonSpinCtrl (Drehregler) an einem von CEdit abgeleiteten Objekt. Für ein Editbox funktioniert das auch. Jetzt wollte ich das in mein eigentliches Projekt einbinden, aber sobald mehr als ein Editfeld mit diesem Spin versehen wird, ist es nur im letzten in voller Größe zu sehen 😞
    in den anderen Editboxen, sehe ich das Spin nur ca. 1 Pixel breit. Funktionalität ist vorhanden, nur kann man es halt nicht mit der Maus anwählen, da man es nicht treffen kann ;).
    Wenn der Parameter UDS_ALIGNRIGHT weggelassen wird, werden die Spins korrekt gezeichnet und Funktionalität ist vorhanden.
    Wie kann so etwas kommen, welchen Parameter muss ich ändern, damit der Spin eingeblendet bleibt?

    pSpin ist eine Klassenvariable für das jeweilige Editfeld;

    pSpin = new CSpinCtrl;
    pSpin->Create(WS_VISIBLE|WS_BORDER|WS_CHILD|UDS_AUTOBUDDY|UDS_ALIGNRIGHT|UDS_ARROWKEYS,rect,this->GetParent(),idspin++);
    pSpin->SetBuddy(this);
    


  • auf was zeigt this?



  • ach ja, this zeigt auf die Editbox



  • 1. Stimmt die Taborder?
    2. Was passiert, wenn du UDS_AUTOBUDDY wegläßt?



  • Kann ich die Taborder dynamisch ändern?
    das Editfeld ist statisch im Ressourceneditor erstellt. bei den Editfeldern, wo ich es benötige, erstelle ich dann dynamisch die Spins dazu.

    seltsam, wenn ich das Autobuddy weglasse geht es.
    Warum das? Was hat das Eine mit dem Zeichnen der Ctrl's zu tun?



  • Na, trotzdem danke für den Tipp 😉



  • Das Autobuddy ist für Faule.

    Dann muss das Spinctrl in der Tabreihenfolge direkt hinter dem Edit liegen. Sonst geht es wie du gesehen hast schief. 😃


Anmelden zum Antworten