Dialog an Fenster 'binden'



  • Nix 👎 . Wie gesagt: Der erste Parameter in der DlgProc ist das Handle deines Dialogs. Dann leg dir eben eine globale HWND-Variable an, die du dann in WM_INITDIALOG füllst:

    // global:
    HWND g_hDialog;
    
    BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
    {
       switch(uiMsg)
       {
          case WM_INITDIALOG:
             g_hDialog = hwndDialog;
             return TRUE;
       }
    
       return FALSE;
    }
    


  • Naja aber globale Variablen sind unschön ... 😞



  • Puh... Man, du bist aber anstrengend. Dann machs halt so: Benutze DialogBoxParam() anstatt von DialogBox() und verwende als letzten Parameter dein MainWindow-Handle. An dieses schickst du in der WM_INITDIALOG-Behandlung per WM_USER dein Dialog-Handle. Dann hast du dein Dialog-Handle auch in der MainWindow-Proc.
    Aber mal im Ernst - was ist so schlimm an einer globalen Variable? Wie du siehst, macht es einiges einfacher.



  • Mich interessiert jetzt aber trotzdem mal, was du dem Dialog schicken willst per WM_USER. Ich bin fast überzeugt, dass das auch anders geht.



  • WebFritzi schrieb:

    Mich interessiert jetzt aber trotzdem mal, was du dem Dialog schicken willst per WM_USER. Ich bin fast überzeugt, dass das auch anders geht.

    Hähä, ...aber danke erstmal:

    Also in einem Dialog wird n' Laufwerk vom benutzer angegeben...im anderen werden dann entsprechende Infos darüber angezeigt..bzw die Wiedergabe der CD (wenn AudioCD, wird vorher geprüft) gestartet 😉

    Und die kommunizieren halt via Msg's

    Aber nochmal fettes DAnke! 👍



  • Bitteschön. Keine Ursache.

    Aber ich verstehe das nicht ganz. Wozu sollten denn an den Info-Anzeige-Dialog Messages geschickt werden?



  • Na um welches Laufwerk es sich handelt bspw.:

    SendMessage(hInfoDlg, WM_INFODISC/*oder wat auch immer*/, fDriveReady, (LPARAM)szDrivePath);
    

    Achja:
    Statische Variablen sind doch sofort erstmal auf 0 gesetzt oder ?
    (Also ohne Init.)

    Und^^:

    Wo deklarierst du deine Vars ?....vorm MessageSwitch oder in jedem Message-Zweig =?

    thX 😉



  • theq schrieb:

    Na um welches Laufwerk es sich handelt bspw.:

    Aha. Das kannst du z.B. durch DialogBoxParam() erledigen. Erstelle eine Struktur, in die alle Infos über das Laufwerk / die Laufwerke reinkommen und übergib diese dem Dialog im letzten Parameter von DialogBoxParam() als Pointer.



  • Hmm ok, danke, stimmt eigentlich...*vor*die*wand*hau*

    Und das:

    theq schrieb:

    Achja:
    Statische Variablen sind doch sofort erstmal auf 0 gesetzt oder ?
    (Also ohne Init.)

    Und^^:

    Wo deklarierst du deine Vars ?....vorm MessageSwitch oder in jedem Message-Zweig =?

    thX 😉



  • theq schrieb:

    Achja:
    Statische Variablen sind doch sofort erstmal auf 0 gesetzt oder ?
    (Also ohne Init.)

    Keine Ahnung. Darauf sollte man sich aber nicht verlassen. Wenn du dir dessen sicher sein willst, setze sie immer auf 0 bzw. NULL.

    theq schrieb:

    Wo deklarierst du deine Vars ?....vorm MessageSwitch oder in jedem Message-Zweig =?

    Siehe anderer Thread.


Anmelden zum Antworten