Button deaktivieren - funktioniert nicht wie gewünscht.
-
Im Forum hier habe ich herausgefunden, dass man ungefährt wie folgt vorgehen sollte:
void CDlgPPM::OnBnClickedButtonAlgStart() { GetParent()->GetDlgItem(IDC_BUTTON_ALG_START)->EnableWindow(FALSE); GetParent()->GetDlgItem(IDC_BUTTON_ALG_PAUSE)->EnableWindow(TRUE); //oder: m_WndButtonAlgorithmStart.EnableWindow(FALSE); m_WndButtonAlgorithmPause.EnableWindow(TRUE); }das erstere funktioniert nicht (bricht ab), dasd zweite läuft, aber nicht so wie gewünscht.
Und zwar habe ich drei Buttons: Start, Pause, Ende
Am Anfang ist Start und Ende aktiv, Pause deaktiv.
Sobald Start gedrückt wird, soll Start deaktiv und Pause aktiv sein.ABER: erst wenn ich Ende drücke, wird der Code von Start aufgerufen. Daher verstehe ich gerade gar nicht was passiert.
Matthias
-
Hmm zu deinem 2. Problem ... guck mal in BEGIN_MESSAGE_MAP ... vllt ist da einer falschen ID ne falsche Funktion zugeordnet ...
zu 1. Bist du dir denn sicher das sich das Control in deinem Dialog übergeordneten befindet?
CWnd* pWnds[3]; pWnd[0] = GetDlgItem(IDC_BUTTON_ALG_START)->EnableWindow(FALSE); pWnd[1] = GetDlgItem(IDC_BUTTON_ALG_PAUSE); pWnd[2] = GetDlgItem(IDC_BUTTON_ALG_ENDE); for (unsigned short n = 0; n < 3; ++n) { if (pWnds[n] == NULL || pWnd[n]->IsWindow()) { MessageBox("Fehler beim aktivieren der Buttons!", NULL, MB_OK | MB_ICONERROR); return; } } pWnds[0]->EnableWindow(FALSE); pWnds[1]->EnableWindow(TRUE); pWnds[2]->EnableWindow(TRUE);So ... guck so mal ob er dir da die MessageBox bringt ...
-
Es funktioniert alles. Der Fehler ist so eindeutig, dass es peinlich ist...
Ich rufe mit dem Start Button eine Berechnung auf, die erst mit dem Ende Button beendet wird. Daher kann der Code zum Ändern des Buttons - der nach der Routine zum Starten der Berechnung kommt - erst durch das Beenden ausgeführt werden.
Trotzdem Danke.
Matthias