GUI mit Edit Feldern und Childs



  • Hi,

    ich konnte dieses Verhalten nachstellen.
    Das hat mit WS_CHILD und WS_CAPTION zu tun. Zusammen funktioniert das Edit-Feld nicht mehr. Wie hier beschrieben: http://www.c-plusplus.net/forum/16586-full kann ich das Verhalten mit WS_CHILD und WS_POPUP nachstellen, scheint ein Fehler seitens WinzigWeich zu sein, anders kann ich mir das nicht erklären.

    Gruß
    Ombre

    PS: Die Kombination aus WS_CAPTION und WS_DLGFRAME macht keinen Sinn.

    MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

    WS_CAPTION
    0x00C00000L

    The window has a title bar (includes the WS_BORDER style).

    WS_DLGFRAME
    0x00400000L

    The window has a border of a style typically used with dialog boxes. A window with this style cannot have a title bar.



  • Ombre schrieb:

    kann ich das Verhalten mit WS_CHILD und WS_POPUP nachstellen, scheint ein Fehler seitens WinzigWeich zu sein, anders kann ich mir das nicht erklären.

    RTFM 👍



  • Cloud2F schrieb:

    Childs

    children
    Bitte Englisch lernen.

    Cloud2F schrieb:

    (WS_OVERLAPPEDWINDOW & !WS_MAXIMIZEBOX)
    

    (WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX)
    Bitte C++ lernen.

    Cloud2F schrieb:

    CreateWindow(szItemName,szItemName, WS_CAPTION | WS_CHILD | WS_CLIPSIBLINGS | WS_DLGFRAME,5,100,10,10,hWnd,NULL,((LPCREATESTRUCT) lParam)->hInstance,NULL);
    

    Eine Windowclass namens szItemName ? Ernsthaft?

    Cloud2F schrieb:

    GUIItem[curID].hWnd=CreateWindow("EDIT",GUIItem[curID].name, WS_BORDER | WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | BS_PUSHLIKE | ES_NUMBER,x,y,xLen,yLen,parent,NULL,NULL,NULL);
    

    Meinst du wirklich die Windowclass "EDIT" wird den Button-Style** BS ** _PUSHLIKE unterstützen?
    Bitte nachdenken.



  • hustbaer schrieb:

    Cloud2F schrieb:

    Childs

    children
    Bitte Englisch lernen.

    Cloud2F schrieb:

    (WS_OVERLAPPEDWINDOW & !WS_MAXIMIZEBOX)
    

    (WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX)
    Bitte C++ lernen.

    Cloud2F schrieb:

    CreateWindow(szItemName,szItemName, WS_CAPTION | WS_CHILD | WS_CLIPSIBLINGS | WS_DLGFRAME,5,100,10,10,hWnd,NULL,((LPCREATESTRUCT) lParam)->hInstance,NULL);
    

    Eine Windowclass namens szItemName ? Ernsthaft?

    Cloud2F schrieb:

    GUIItem[curID].hWnd=CreateWindow("EDIT",GUIItem[curID].name, WS_BORDER | WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | BS_PUSHLIKE | ES_NUMBER,x,y,xLen,yLen,parent,NULL,NULL,NULL);
    

    Meinst du wirklich die Windowclass "EDIT" wird den Button-Style** BS ** _PUSHLIKE unterstützen?
    Bitte nachdenken.

    wow gibt ja schon gestörte persönlichkeiten
    aber du mein freund sprengst ja das maß der dinge
    dein beitrag ist genauso wie mein beitrag ja 0% konstruktiv
    versuch mal lieber dich in deinem sozialem umfeld einzugliedern anstatt trolling in foren zu betreiben



  • many schrieb:

    wow gibt ja schon gestörte persönlichkeiten
    aber du mein freund sprengst ja das maß der dinge
    dein beitrag ist genauso wie mein beitrag ja 0% konstruktiv
    versuch mal lieber dich in deinem sozialem umfeld einzugliedern anstatt trolling in foren zu betreiben

    Normalerweise würde ich da zustimmen, aber hustbär hat recht. Mal abgesehen vom Englischlernen sind das alles gute und richtige Hinweise, wenn auch nicht nett formuliert.



  • nwp3 schrieb:

    many schrieb:

    wow gibt ja schon gestörte persönlichkeiten
    aber du mein freund sprengst ja das maß der dinge
    dein beitrag ist genauso wie mein beitrag ja 0% konstruktiv
    versuch mal lieber dich in deinem sozialem umfeld einzugliedern anstatt trolling in foren zu betreiben

    Normalerweise würde ich da zustimmen, aber hustbär hat recht. Mal abgesehen vom Englischlernen sind das alles gute und richtige Hinweise, wenn auch nicht nett formuliert.

    die einzigen richtigen hinweise bestehen aus der tilde und bs_pushlike
    womit er aber keine wirklichen probleme hat. das ganze hat eben nicht seine frage oben beantwortet. man hätte auch sehr nett darauf hinweisen können
    einem kind was gerade fahrradfahren lernt sagt man auch nicht ständig, es treten und lenken lernen soll



  • hustbaer schrieb:

    Cloud2F schrieb:

    Childs

    children
    Bitte Englisch lernen.

    Cloud2F schrieb:

    (WS_OVERLAPPEDWINDOW & !WS_MAXIMIZEBOX)
    

    (WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX)
    Bitte C++ lernen.

    Cloud2F schrieb:

    CreateWindow(szItemName,szItemName, WS_CAPTION | WS_CHILD | WS_CLIPSIBLINGS | WS_DLGFRAME,5,100,10,10,hWnd,NULL,((LPCREATESTRUCT) lParam)->hInstance,NULL);
    

    Eine Windowclass namens szItemName ? Ernsthaft?

    Cloud2F schrieb:

    GUIItem[curID].hWnd=CreateWindow("EDIT",GUIItem[curID].name, WS_BORDER | WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | BS_PUSHLIKE | ES_NUMBER,x,y,xLen,yLen,parent,NULL,NULL,NULL);
    

    Meinst du wirklich die Windowclass "EDIT" wird den Button-Style** BS ** _PUSHLIKE unterstützen?
    Bitte nachdenken.

    joa also many hat schon so'n bisschen recht. ich bin nich hier im forum um perfekt c++ zu beherrschen, sondern fragen zu stellen und dazu zu lernen. danke dennoch für diese destruktive antwort 😉

    Ombre schrieb:

    Hi,

    ich konnte dieses Verhalten nachstellen.
    Das hat mit WS_CHILD und WS_CAPTION zu tun. Zusammen funktioniert das Edit-Feld nicht mehr. Wie hier beschrieben: http://www.c-plusplus.net/forum/16586-full kann ich das Verhalten mit WS_CHILD und WS_POPUP nachstellen, scheint ein Fehler seitens WinzigWeich zu sein, anders kann ich mir das nicht erklären.

    Gruß
    Ombre

    PS: Die Kombination aus WS_CAPTION und WS_DLGFRAME macht keinen Sinn.

    MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

    WS_CAPTION
    0x00C00000L

    The window has a title bar (includes the WS_BORDER style).

    WS_DLGFRAME
    0x00400000L

    The window has a border of a style typically used with dialog boxes. A window with this style cannot have a title bar.

    Danke! Das hat mir sehr geholfen, gibt zum Glück noch nette Menschen hier. Hab es also nun hinbekommen!
    Schönes WE an alle außer "hustbaer" 🙂



  • Cloud2F schrieb:

    joa also many hat schon so'n bisschen recht. ich bin nich hier im forum um perfekt c++ zu
    beherrschen, sondern fragen zu stellen und dazu zu lernen. danke dennoch für diese destruktive antwort 😉

    Ich kann die Antwort von hustbaer nicht destruktiv finden. Fachlich hat er absolut Recht. Die Hinweise
    sind richtig und auf einen besseren Umgangston hättest Du ihn deinerseits hinweisen können.

    Wenn du wirklich dazulernen möchtest ist es vermutlich der falsche Weg hilfbereite Mitmenschen,
    die dir unentgeltlich Hilfe anbieten, so anzugehen.



  • @Cloud2F
    Unfreundlich vorgebrachte konstruktive Kritik != destruktiver Kritik.

    @many

    many schrieb:

    die einzigen richtigen hinweise bestehen aus der tilde und bs_pushlike

    Falsch.
    Alle sind "richtig", und alle sind mehr oder weniger hilfreich.

    Es heisst nunmal einfach "children", das ist Fakt, zu sagen der Hinweis sei nicht richtig ist Blödsinn. Ob er sinnvoll oder nötig gewesen ist ist eine andere Frage.

    Und es ist nunmal keine gute Idee den Titel des Fensters als Window-Class-Name zu misbrauchen. Vor allem wenn aus dem Code nicht hervorgeht was übergeben wird. Hätte ja sein können dass das der Fehler ist. Und selbst wenn nicht, ist es schlechter Stil, den man sich abgewöhnen sollte.

    womit er aber keine wirklichen probleme hat. das ganze hat eben nicht seine frage oben beantwortet.

    Kann ich ja nicht wissen. Ich erwarte mir aber dass Leute die nen Fehler suchen erstmal offensichtliche Fehler beheben (auch wenn sie sich nicht auswirken) bzw. "gefährliche" Stellen wie die szItemName Geschichte zu fixen.

    man hätte auch sehr nett darauf hinweisen können

    Ich gebe ja zu dass es unfreundlich war, und das ohne guten Grund.

    einem kind was gerade fahrradfahren lernt sagt man auch nicht ständig, es treten und lenken lernen soll

    Der Vergleich ist unpassend. Radfahren lernt man im Prinzip von alleine. Jeder ausreichend alte Mensch (also alle ausgenommen Kleinkinder) sollte es schaffen rauszubekommen wie man mit nem Rad vorankommt, ohne dass man es ihm erklärt. Und in weiterer Folge dann auch schaffen gut fahren zu lernen. Beobachtung reicht vollkommen aus.

    Programmieren lernt man so aber nicht. Zumindest nicht gut.



  • BTW:
    Das Verhalten ist hier dokumentiert:
    http://support.microsoft.com/kb/230587/en-us

    Ob nen es einen Bug nennen kann weiss ich nicht, da

    MSDN schrieb:

    There are not many good ways to work around this limitation because it is Windows itself that is intentionally causing this behavior.

    MS muss gute Gründe haben es so zu lassen, sonst hätten sie es auch längt gefixt.

    Den Vorschlag von MS einfach ein "Owned Window" statt eines Child Window zu verwenden finde aber nicht gut.

    Mein Vorschlag:
    Schieb ein zweites Child-Fenster (ohne WS_CAPTION, WS_BORDER etc.) dazwischen.


Anmelden zum Antworten