Menübutton ausgrauen
-
Hi leute,
um einen Menüpunkt bei bedingten dingen zu deaktivieren, benutze ich folgenden Code:
void CTTTView::OnUpdateneuesspiel(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here if (m_win == 1 || m_win == 2 || m_count == 9) { pCmdUI->Enable(TRUE); } else { pCmdUI->Enable(FALSE); } }leider wird der button bei FALSE nicht ausgegraut.
Wie kann ich das hinbekommen? danke
-
Du brauchst noch einen zusätzlichen Handler wenns wirklich ein Button ist:
//.h class CTTTView { //.. protected: afx_msg void OnIdleUpdateCmdUI(); //.. } //.cpp #include <afxpriv.h> BEGIN_MESSAGE_MAP(CTTTView, CView) ON_MESSAGE_VOID(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI) END_MESSAGE_MAP() void CTTTView::OnIdleUpdateCmdUI() { UpdateDialogControls(this, FALSE); }Und Du könntest auch gleich
pCmdUI->Enable( m_win == 1 || m_win == 2 || m_count == 9 );schreiben

-
Ich finde die Schreibweise von Sebastian08 besser denn auf den ersten Blick übersichtlich.
Man kann sehr viel im Code noch effektiver (zusammengefasst) schreiben aber die Frage ist ob es besser lesbar wird.
Schneller ist es dadurch auch nicht.
-
Naja solche UpdateHandler hat man oft sehr viele und die sind auch meist nicht soo wichtig, da bevorzuge ich die Kürze

-
Danke für die Antworten.
Nur leider graut er bei meiner Lösung nicht aus.Was habe ich vergessen?
-
Wird denn 'FALSE' auch wirklich angesprungen (Breakpoint setzen)?
-
ja, wird es

-
Passen Id und Funktion in der message map zusammen?