GCRACK Geschrieben 16. April 2002 Geschrieben 16. April 2002 Hi, hab mal wieder ein kleines Prob mit der Api! Wie kann ich nen Button aktivieren und deaktivieren?? Ich dachte mit BM_SETSTATE würde es klappen, aber das funzt leider ned! Für Hinweise die zum Auffinden der Lösung dienen, wird eine Belohnung von 1001 Dank ausgesetzt. Zitieren
Klotzkopp Geschrieben 16. April 2002 Geschrieben 16. April 2002 Ich denke, WM_ENABLE dürfte Dein Problem lösen. Zitieren
GCRACK Geschrieben 16. April 2002 Autor Geschrieben 16. April 2002 OK, 1001 Dank Eine Frage hätt ich dann noch! :eek: Folgendes: Jetzt wo der Button aktiviert ist soll per Klick auf selbigen eine zweite Diaolg-Box erscheinen in welcher sich einb Listenfeld befindet. Diesem Listenfeld möcht ich Strings zuweisen. Bei Klick auf Schliessen soll das fenster geschlossen werden und der Fokus soll zur ersten Dialogbix zurückkehren! Folgendermaßen hatte ich es probiert: case IDC_BUTTON3: { DialogBox(NULL,MAKEINTRESOURCE(IDD_DIALOG2),hwnd,DlgProc); SetFocus(hwndDialog2); ifstream Einlesen ("Fakes.bat", ios_base::in); if(Einlesen.good()) { while(!Einlesen.eof()) { MessageBox(NULL, g_acReadln, "TEXTAUSDATEI", MB_OK); Einlesen.getline(g_acReadln, 255); LRESULT lres_ListInput = SendMessage(hwndList, LB_ADDSTRING,0, (LPARAM)g_acReadln); } } }break; case IDC_BUTTON4: PostQuitMessage(0); break; Dummerweise wird in der List-Box nix ausgegeben, da der Handle zur Dialog-Box2 ungültig ist, und wenn ich den Button Schliessen drücke wird das komplette Programm beendet - und nicht nur wie gewünscht die Dialog-Box2! Sorry, dass ich dermaßen nerv, aber das Proggie sollte eigentlich schon längst fertig sein! Zitieren
Klotzkopp Geschrieben 16. April 2002 Geschrieben 16. April 2002 DialogBox kommt erst dann zurück, wenn die angegebene DlgProc-Funktion den Dialog mittels EndDialog schließt. Danach ist der Dialog weg, also kannst Du nicht auf das Listenfeld zugreifen. Der andere Dialog könnte das Listenfeld selbst während der Behandlung von WM_INITDIALOG füllen. Zitieren
GCRACK Geschrieben 16. April 2002 Autor Geschrieben 16. April 2002 Aso, und was heisst das jetzt??? Also ich hab im WM_INITDIALOG folgendes stehen: hwndDialog = GetDlgItem(hDlg, IDD_DIALOG1); hwndDialog2 = GetDlgItem(hDlg, IDD_DIALOG2); Ist das so korrekt oder kann ich nur den Handle vom 1.Dialog ermitteln?? Ich hol mir dort nämlich auch die Handles von Steuerelementen auf Dialog 1 und 2 - die von 1 sind gültig, die von 2 ned! Zitieren
Klotzkopp Geschrieben 16. April 2002 Geschrieben 16. April 2002 Verwendest Du etwa für beide Dialoge dieselbe DlgProc? Und was ist "ned"? Zitieren
GCRACK Geschrieben 16. April 2002 Autor Geschrieben 16. April 2002 Original geschrieben von Klotzkopp DialogBox kommt erst dann zurück, wenn die angegebene DlgProc-Funktion den Dialog mittels EndDialog schließt. Danach ist der Dialog weg, also kannst Du nicht auf das Listenfeld zugreifen. Der andere Dialog könnte das Listenfeld selbst während der Behandlung von WM_INITDIALOG füllen. Also das Listenfeld kann ich erst füllen wenn Dialog 1 erstllt wird, und das geschieht erst beim drücken einer Schaltfläche auf Dialog 1! Wie ist das eigentlich wenn ich 2 Dialogboxen hab, greifen die beide auf die selbe DlgProc-Funktion zu?? Zitieren
GCRACK Geschrieben 16. April 2002 Autor Geschrieben 16. April 2002 Original geschrieben von Klotzkopp Verwendest Du etwa für beide Dialoge dieselbe DlgProc? Und was ist "ned"? Jo, ich hab nur eine DlgProc! Und ned bedeutet soviel wie nicht! Zitieren
Klotzkopp Geschrieben 16. April 2002 Geschrieben 16. April 2002 Original geschrieben von GCRACK Also das Listenfeld kann ich erst füllen wenn Dialog 1 erstllt wird, und das geschieht erst beim drücken einer Schaltfläche auf Dialog 1! Wie ist das eigentlich wenn ich 2 Dialogboxen hab, greifen die beide auf die selbe DlgProc-Funktion zu?? Wenn das Listenfeld in Dialog 2 ist, dann kannst Du es frühestens füllen, wenn Dialog 2 erstellt wurde. Das erfährst Du durch WM_INITDIALOG. Und auf welche DlgProc die Dialoge zugeifen, gibst Du doch beim Aufruf von DialogBox selbst an. Wenn beide dieselbe verwenden, dann musst Du anhand des HWND unterscheiden, welcher Dialog gerade erstellt wurde. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.