Buttons und ähnliches mit Groupbox als ParentWindow [GELÖST]



  • Abend,

    ich stehe im Moment vor folgendem Problem mit meinem Programm: Wenn ich Buttons auf einer Groupbox erstelle (also mit dem Handle der Box als Parent), dann kann ich auf keine Ereignisse (z.B. bei WM_COMMAND) mehr reagieren.

    Im Grundlegenden weiß ich wo das Problem liegt (BUTTON -> WM_COMMAND -> MessageLoop d. Groupbox --XX--> MessageLoop des Hauptfenster). In Worten die Loop von der Loop sendet die Nachricht einfach nicht weiter.

    Zwei Lösungen (Subclassing, eigenes Control erstellen) finde ich übers Internet zwar zu Hauf, aber darauf möchte ich lieber verzichten.
    Gibt es da noch andere Möglichkeiten?

    Danke im Voraus für etwaige Vorschläge.



  • Passt wohl eher ins WinApi-Forum ...
    Was spricht denn gegen Subclassing, des du darauf unbedingt verzichten möchtest?



  • Dieser Thread wurde von Moderator/in Phoemuex aus dem Forum C++ 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.


  • Mod

    Nur mal gleich zu Anfang:
    Die Buttons sollten keine Childs der Groupbox sein, sondern Siblings. Wobei bei einer Gruppe die Groupbox, den Anfang macht und die Buttons folgen.
    Das nächste Contrl nach der Gruppe sollte wiederum WS_GROUP Stil haben.

    Ist das so bei Dir?



  • BasicMan01 schrieb:

    Passt wohl eher ins WinApi-Forum ...

    Ich war der Meinung das Thema im WinAPI-Forum erstellt zu haben..^^ Wohin hab ich mich letztendlich verklickt?

    Vielen Dank an Martin Richter, die Antwort hat mir den Tag gerettet :D.
    Bei der Groupbox fehlte das WS_GROUP, und ganz nebenbei hab ich hier WS_CLIPSIBLINGS bei den Buttons fälschlicherweise verwendet
    (nur ohne die Flag "liegen" die Buttons auch sichtbar über auf der Groupbox.)

    Falls andere das gleiche Problem haben, hier die Lösung:

    //Anfang der Gruppierung...
            grpFilters = CreateWindowEx(0,L"button",L"Grupppe A",
                                         WS_CHILD|WS_GROUP| //neue Flag..
                                         WS_VISIBLE|BS_GROUPBOX, 
                                         /*restliche Parameter...*/ );
    
             stcFShow = CreateWindowEx(0,L"static",L"Control A1",
                                         WS_CHILD| //kein WS_CLIPSIBLINGS (!)
                                         WS_VISIBLE|BS_GROUPBOX, 
                                         /*restliche Parameter...*/ );
    
             btnFShow= CreateWindowEx(0,L"button",L"Grupppe A2",
                                         WS_CHILD|  //kein WS_CLIPSIBLINGS (!)
                                         WS_VISIBLE|BS_GROUPBOX, 
                                         /*restliche Parameter...*/ );
    /// Ende der Gruppierung, da die zweite Groupbox mit der Groupbox beginnt...
    
              grpGroup2= CreateWindowEx(0,L"button",L"GruppeB",
                                          WS_CHILD|WS_GROUP|  
                                          WS_VISIBLE|BS_GROUPBOX,
                                         /*restliche Parameter*/;
             stcItemB1= CreateWindowEx(0,L"static",L"Control B1",
                                         WS_CHILD| //kein WS_CLIPSIBLINGS (!)
                                         WS_VISIBLE|BS_GROUPBOX, 
                                         /*restliche Parameter...*/ );
             //usw....
    

Anmelden zum Antworten