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.