mehrere eigenständige fenster



  • 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.



  • aba es sind doch 2 wndproc's, für jedes fenster ein eigenes.

    welche funktion muss ich denn benutzen, wenn der button gedrückt würde, um eine nachricht an die andere proc zu schicken das die z.b ein rechteck zeichnen soll?

    oder sollte ich das alles in einer proc machen?

    oder gibt es eine ganz andere lösung?



  • Ich frag dich mal folgendes: Wofür dient eine WndProc?



  • okay.. ich denke mal um dem jeweiligen fenster befehle zu geben was es machen soll und wie und wo und warum und mit was es das machen soll?



  • Die WndProc() dient als Callback. Wann immer etwas mit dem Fenster passiert (User klickt mit der Maus rum, drückt ne Taste, was auch immer) wird die WndProc() des Fensters aufgerufen um zu entscheiden was getan werden soll. Wenn du also willst dass X passiert wenn der Benutzer Y macht dann musst du eben in der WndProc() des entsprechenden Fensters checken ob Y eingetreten ist und wenn ja X auslösen...



  • aber wenn z.b Y der button ist und der in einer anderen proc als X(das was macht werden soll) ist. dann muss ich doch irgentwie eine nachricht von der proc wo y ist an die proc wo X ist schicken.

    anderst hab ichs mit einer globalen variable versucht.

    z.b static int i;

    und in der proc von X eingetragen:

    if( i == 1)
    ....das und das machen...

    und in der proc des buttons also Y

    switch(LOWORD(wParam))
    {
    case ID_DES_BUTTONS:
    i == 1;
    break;
    }

    das geht aber auch nicht.



  • Und jetzt überleg mal wann dieses if in der Proc von X aufgerufen wird...

    Abgesehen davon dass

    case ID_DES_BUTTONS: 
    i == 1; 
    break;
    

    keine Zuweisung an i ist.



  • oh ja das war ein flüchtigkeitsfehler mit der zuweiseung.

    in WM_PAINT?



  • metapoint2011 schrieb:

    in WM_PAINT?

    Wenn dus im WM_PAINT von X stehen hast dann ja. Dann überleg jetzt mal wann das WM_PAINT von X aufgerufen wird...



  • in

    switch(message)
    {
    case WM_PAINT:
    ...................
    .......
    ....
    }



  • Die Frage ist nicht wo es steht sondern wann es aufgerufen wird. Wann wird dieser Code ausgeführt?



  • achso hmm....

    weiss nicht genau auf was du hinaus willst.

    Eigentlich dann, wenn etwas gezeichnet werden soll.


Anmelden zum Antworten