Radiobutton -> BN_CLICKED



  • Bei Pushbuttons kommt beim Klicken msg = WM_COMMAND, lParam = Handle des Buttons und HIWORD(wParam) = BN_CLICKED, BN_DBLCLK usw.

    Warum funktioniert das jetzt wieder nicht mit Radiobuttons?

    Radiobuttons[0] = CreateWindowExA(0, "BUTTON", "One", WS_VISIBLE | WS_CHILD | ..
                                      BS_RADIOBUTTON | BS_NOTIFY, 10, 30, 80, 15, Groupbox, 0, ..
                                      Instance, Null)
    

    Mit oder ohne BS_NOTIFY ist wurst. Laut MSDN wird bei allen Buttons BN_CLICKED übertragen.

    mfg olli

    Edit: Wenn ich als Parent das Fenster statts der Groupbox angebe, dann gehts wie mit dem Button(der auch nicht in der Groupbox war). Kann ich denn nicht die WndProc für das Fenster komplett benutzen oder muss ich GetMessage(Message, Groupbox, 0, 0) aufrufen?


  • Mod

    Wieso gibt Du die Groupbox als Parent an? Dann bekommt auch die die WM_COMMAND Nachrichten. Gib als Parent den Dalog an!



  • Man gruppiert die Radiobuttons in der Groupbox, damit der Benutzer nur eine auswählen kann. Beispielsweise: "Anrede" -> "Herr" | "Frau"; "Familienstand" -> "Ledig" | "Verheiratet". Würde ich die in einen Fenster unterbringen, könnte ich auch nur eine der 4 Optionen wählen.
    mfg olli


  • Mod

    Vertex schrieb:

    Man gruppiert die Radiobuttons in der Groupbox, damit der Benutzer nur eine auswählen kann. Beispielsweise: "Anrede" -> "Herr" | "Frau"; "Familienstand" -> "Ledig" | "Verheiratet". Würde ich die in einen Fenster unterbringen, könnte ich auch nur eine der 4 Optionen wählen.

    Das mag unter VB so sein. Unter VC wird dies ausschließlich durch den Stil WS_GROUP erreicht. Eine Gruppe beginnt mit dem ersten Control das WS_GROUP hat und endet vor dem nächsten mit einem WS_GROUP (in der Z-Order)!
    Ansonsten spielen weder IDs noch sonst etwas eine Rolle.
    Alle Child Windows sind immer direkte Childs eines Dialoges.
    WM_COMMAND Nachrichten werden immer nur and das Parent Window gesendet.



  • OK, vielen Dank!
    D. h., ich kann die Radiobuttons nicht in willkürlicher Reihenfolge erstellen, sondern die, die zusammengehören, müssen nacheinander über CreateWindowEx erstellt werden. Wenn dem so ist, finde ich das ein wenig beschrenkt gelöst von Windows. Aber man kann ja auch BS_RADIOBUTTON statts BS_AUTORADIOBUTTON verwenden 🙂

    Wo wir bei dem Thema sind: Wenn ich ein zweites Fenster zum Hauptfenster anlegen will(also ein Child), kann ich über die selbe WndProc vom Hauptfenster auch die Gadgets des Childfenster ansprechen? Also alles in einer WndProc regeln, statts für das neue Fenster ebenfalls eine WNDCLASSEX zu registrieren mit eigener WndProc.

    mfg olli


Anmelden zum Antworten