mehrere eigenständige fenster



  • dot schrieb:

    Deine "beiden" Window Classes bekommen auch den selben Namen.

    is doch szWindowClass und szWindowClass1?

    Und was genau ist eigentlich der Sinn davon selbigen aus einer String Table zu laden!?

    sollte ich das weglassen? ->

    LoadString(hInstance, IDC_TERM10, szWindowClass1, MAX_LOADSTRING);
    

    ehrlich gesagt weiss ich garnicht was das bringt?



  • metapoint2011 schrieb:

    ehrlich gesagt weiss ich garnicht was das bringt?

    Warum tust dus dann 😕



  • war ein versuch.. hmm..



  • metapoint2011 schrieb:

    is doch szWindowClass und szWindowClass1?

    Und? Beide Variablen haben bei dir den selben Inhalt...



  • okay habe jetzt:

    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    	LoadString(hInstance, IDC_TERM10, szWindowClass, MAX_LOADSTRING);
    	MyRegisterClass(hInstance);
    
    	LoadString(hInstance, IDC_TERM10, szWindowClass1, MAX_LOADSTRING);
    	MyRegisterClass1(hInstance);
    

    auf das geändert:

    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    	LoadString(hInstance, IDC_TERM10, szWindowClass, MAX_LOADSTRING);
    	MyRegisterClass(hInstance);
    
    	LoadString(hInstance, IDC_TERM101, szWindowClass1, MAX_LOADSTRING);
    	MyRegisterClass1(hInstance);
    

    IDC_TERM101 ist jetzt 4000 und IDC_TERM10 109

    jetzt erscheint garkein fenster mehr



  • Nochmal meine Frage: Warum LoadString(). Und selbst wenn: Werden die strings auch richtig geladen? Hat die String Table überhaupt vernünftige Werte für diese IDs?



  • ich weiss es nicht. Ich weiss nur wenn ich es weg lasse wird kein fenster angezeigt.



  • Ist dir eigentlich klar was RegisterClassEx so tut und wofür dieses szWindowClass gut ist und überhaupt!? Wenn nicht solltest du vielleicht erstmal versuchen zu verstehen wie man ein Fenster erzeugt bevor du versuchst zwei zu machen...



  • RegisterClassEx registriert eine fensterklasse und szWindowClass is der Name der registrierten fensterklasse?



  • Gut, dann sollte dir auch klar sein dass du dafür sorgen solltest dass deine beiden Klassen zwei ordentliche und verschiedene Namen bekommen.



  • ahhhh der fehler ist in der .rc datei



  • jaaa habs geschaft. hab auch glaub ich so ziemlich alles verstanden.

    immer diese kleinigkeiten, wie vorhin bei den Text sachen.

    aba wenigstens hab ich jetzt das loadstring und viele andere sachen verstanden.

    jetzt muss ich nurnoch lernen wie diese beiden fenster zusammen arbeiten können.

    > dot <<< du hast mir heute seeehr viel geholfen.

    Ich danke dir echt...



  • metapoint2011 schrieb:

    aba wenigstens hab ich jetzt das loadstring und viele andere sachen verstanden.

    Ich versteh aber immer noch nicht wofür du Fensterklassennamen in der String Table ablegst. Das macht Sinn für Strings die eben z.B. in beliebige Sprachen übersetzt werden sollen, was auf ne Fensterklasse kaum zutrifft.

    metapoint2011 schrieb:

    jetzt muss ich nurnoch lernen wie diese beiden fenster zusammen arbeiten können.

    Was genau meinst du damit?



  • Ich versteh aber immer noch nicht wofür du Fensterklassennamen in der String Table ablegst. Das macht Sinn für Strings die eben z.B. in beliebige Sprachen übersetzt werden sollen, was auf ne Fensterklasse kaum zutrifft.

    die fensternamen sind in strings abgelegt, weil vc++ den code so generiert hat

    Was genau meinst du damit?

    ich will lernen wie die miteinander kommunizieren können. das heisst:

    wenn ich z.b in dem einen fenster einen button drücke, geschieht in dem anderen fenster etwas.

    und hWnd soll ja nicht das parent von dem 2. fenster sein, da das 2. fenster sonnst immer vor dem hWnd ist.

    und das zweite fenster hat ja auch eine eigene wndproc...



  • metapoint2011 schrieb:

    wenn ich z.b in dem einen fenster einen button drücke, geschieht in dem anderen fenster etwas.

    Wo genau liegt da dein Problem? Wenn im einen Fenster ein Button gedrückt wird dann bekommt die WndProc dieses Fensters eine WM_COMMAND geschickt. Und nichts hält dich davon ab dann in dem anderen Fenster etwas passieren zu lassen...



  • mein unwissen...



  • ich weiss absolut nicht, was ich machen soll, wenn ich den knopf drücke, das z.b bei dem anderen fenster ein text erscheint.

    habs mit globalen variablen probiert.

    das zweite fenster, also z.b in der wndproc des ersten fensters deklariert.
    z.b static HWND hWnd1;

    und ja.. geht alles nicht.



  • metapoint2011 schrieb:

    das zweite fenster, also z.b in der wndproc des ersten fensters deklariert.
    z.b static HWND hWnd1;

    Was genau soll das bringen!? Abgesehen davon is eine static variable in einer Funktion nicht global sondern lokal...



  • ja habe ich dann auch gemerkt.

    weiss nich was das bringen soll, wollte nur mal versuchen wie das alles funktioniert, das ich es schonmal weiss.



  • Ich versteh nicht ganz wo genau jetzt dein Problem liegt. Es ist dein Programm, du hast die Fenster erzeugt und kennst damit die Fensterhandles. Es ist deine WndProc, du kannst darin machen was auch immer du gerne hättest. Wenn du willst dass X passiert wenn Button Y gedrückt wird dann musst du einfach in der WndProc des Fensters auf dem sich Button Y befindet WM_COMMAND behandeln und dafür sorgen dass, wenn es Button Y war der gedrückt wurde, X passiert.


Anmelden zum Antworten