Controls (Button etc.) in Klassen, Design Frage



  • In meinem eigentlichen Wrapper benutze ich auch keine map, aber auch kein UserData.

    was denn?



  • HINSTANCE AppInst;
    
    /* weitere Parameter, ala left width etc. */
    

    Find ich nicht gut. Das kann man doch alles mit den Winapi Funktionen abfragen und setzen.



  • Und wie kommt man in OnKeyDown an WPARAM und LPARAM?



  • naja ich würd sagen den funktionpointer erweitern 😃

    typedef void (*Event)(MyControl*, WPARAM, LPARAM);
    


  • @pro...
    das ist zu Umfassend um es kurz zu erwähnen

    @schlechtes design
    ich speichere width height etc, da ich mit get_xxx dies Abfrage und mit set_xxxx setzte, die entsprechenden API Funktionen sitzen dann in diese, dafür ist OOP da, um einen guten Überblick zu bewahren.

    Der gezeigte Code ist ein Beispiel für das Design, das wird doch nicht so 1:1 Übernommen, zur Beruhigung:

    typedef void (*MouseEvent)(MyControl*,int,int,WPARAM); //Klasse,x,y,Shift
    typedef void (*KeyEvent)(MyControl*,int,LPARAM); //Klasse,Keycode,Keydata
    //u.s.w.
    

    Also, den gezeigten code nicht als endcode ansehen



  • krieg ich auch kein stichwort?



  • ich speichere width height etc, da ich mit get_xxx dies Abfrage und mit set_xxxx setzte, die entsprechenden API Funktionen sitzen dann in diese, dafür ist OOP da, um einen guten Überblick zu bewahren.

    versteh ich irgendwie nicht. warum sollen die daten an 2 plätzen gespeichert werden? einmal in windows und einmal in deinem programm. dann muss man die werte ja immer aktuell halten. das ist doch quatsch.



  • pro... schrieb:

    krieg ich auch kein stichwort?

    Bei Fenstern, auch Childwindows, kann man den Zusatzspeicher erweitern und bei standard controls kann man was nehmen, was sie nicht verwenden (z.b. Menu).

    schlechtes design schrieb:

    versteh ich irgendwie nicht. warum sollen die daten an 2 plätzen gespeichert werden? einmal in windows und einmal in deinem programm. dann muss man die werte ja immer aktuell halten. das ist doch quatsch.

    Hmmm, hast recht. Danke, hatte ich so nicht darauf geachtet, ich muß meinen großen Wrapper angleichen, da der Programmierer die Möglichkeit hat durch das Handle eigene Operation durchzuführen, hatte ich die "get" Auslesung entsprechend angeglichen, so das es aus Windows gelesen wird, bei set aber in den Klassen Members geschrieben wird und z.B. mit MoveWindow() ausgeübt wird, demnach sind die Member nutzlos, wer hätte das gedacht.
    Danke für den Tip, da kann man ja noch Speicher sparen, bevor 512MB voll sind. 😉



  • hi,

    wieso verwendest du statt der function pointer keine virtuellen Funktionen, mit Basisklasse/abgeleiteten Klassen etc., wäre eleganter meiner Meinung nach.
    (ich denk du weißt was ich meine ;))

    Oder hast verhalten die sich alle unterschiedlich und du hast so sehr viele?

    Naja, nur so als Einwurf, aber wahrscheinlich auch zu mühselig nochmal alles zu ändern 🙄

    MfG
    DDR-RAM



  • @DDR-RAM
    Virtuelle Funktionen zu überschreiben wäre wesentlich aufwendiger bei der Masse, zumal einige Buttons etwas dürfen und andere nicht.


Anmelden zum Antworten