Benutzer mit den meisten Antworten
MainWnd->IsWindowEnabled liefert TRUE aber MainWnd->EnableWindow(FALSE) liefert FALSE

Frage
-
Hi,
ich habe einen modeless Dialog, der zeitweise modal werden soll.
also hatte ich implementiert
CMyDlg::OnBtnClick() { BOOL bOldEnabled=AfxGetMainWnd()->EnableWindow(FALSE); ... AfxGetMainWnd()->EnableWindow(bOldEnabled); }
Nachdem beim Test nichts mehr reagierte habe ich den Code geändert:
CMyDlg::OnBtnClick() { BOOL bIsEnabled=AfxGetMainWnd()->IsWindowEnabled(); BOOL bOldEnabled=AfxGetMainWnd()->EnableWindow(FALSE); ... AfxGetMainWnd()->EnableWindow(bOldEnabled); }
Das Debuggen hat herausgebracht, dass zwar bIsEnabled TRUE, aber bOldEnabled FALSE ist.
Wieso???
Ich habe den Quelltext erstmal erneut abgeändert
CMyDlg::OnBtnClick() { BOOL bIsEnabled=AfxGetMainWnd()->IsWindowEnabled(); if (bIsEnabled) AfxGetMainWnd()->EnableWindow(FALSE); ... if (bIsEnabled) AfxGetMainWnd()->EnableWindow(TRUE); }
Aber ich hätte gedacht, dass der erste Quelltext eigentlich der richtige ist...
Tschüß, Holger.
Antworten
-
Hallo Holger,
Schau Dir mal folgende Artikel an http://msdn.microsoft.com/en-us/library/windows/desktop/ms646291(v=vs.85).aspx
Return value
Type: BOOL
If the window was previously disabled, the return value is nonzero.
If the window was not previously disabled, the return value is zero.
"
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort markiert Holger Gothan Montag, 27. Januar 2014 11:16
Alle Antworten
-
Hallo Holger,
Schau Dir mal folgende Artikel an http://msdn.microsoft.com/en-us/library/windows/desktop/ms646291(v=vs.85).aspx
Return value
Type: BOOL
If the window was previously disabled, the return value is nonzero.
If the window was not previously disabled, the return value is zero.
"
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort markiert Holger Gothan Montag, 27. Januar 2014 11:16
-
ich wollte mich ja schon aufregen, dass ich die Hilfe sehr wohl gelesen habe.
Beim genaueren Hinsehen sah ich dann, dass der Link tatsächlich einen etwas anderen (und eindeutigeren) Hilfetext als mein VS2010 bringt.
Bei mir steht "Indicates the state before the EnableWindow member function was called."
Damit war klar, dass EnableWindow TRUE liefert, wenn vorher Fenster enabled.Klassiche Fehlleistung: Hätte ich weitergelesen, hätte ich auch den Hinweis gesehen, dass TRUE ein vorher disabled bedeutet.
Tschüß, Holger.