Zum Inhalt springen

WinApi: Buttons aktivieren/deaktivieren


GCRACK

Empfohlene Beiträge

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. :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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! :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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! :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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??

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...