Häkchen im Menü setzen
-
Servus Leute,
habe da ein kleines Problem. Habe in einer dialogfeldbasierenden App ein Menü erstell. In einem der Pulldown-Menüs möchte ich hinter den Einträgen Häkchen setzen:
BOOL m_bMyVar;
......
......pCmdUI->SetCheck(m_bMyVar = 0);
Leider sind keine Häkchen zu sehen. In MDI und SDI-Apps klappt das ja aber nicht in meiner dialogfeldbasierenden App. Der Compiler gibt auch keine Fehlermeldung. Es ist einfach nur kein Häkchen zu sehen.
Würde mich riesig freuen, wenn mir einer helfen könnte.
MFG
-
pCmdUI->SetCheck(m_bMyVar = 0);
HÄ? Was soll die Zuweisung?
-
Hi,
private:
BOOL m_bMyVar;void CUmrechnungApp::OnUpdateMenueintrag(CCmdUI* pCmdUI)
{
m_bMyVar = ID_MENUEINTRAG;
pCmdUI->SetCheck(m_bMyVar = 1);
}Ist ja eigentlich auch egal. Das Problem ist, dass es auf diese Art in einer SDI- oder MDI-App funzt. In der dialogfeldbasierenden nicht.
MFG
-
Du hast vergessen, die Werte aus den Variablen zu holen. Versuchs mal damit:
void CUmrechnungApp::OnUpdateMenueintrag(CCmdUI* pCmdUI) { m_bMyVar = ID_MENUEINTRAG; pCmdUI->SetCheck(m_bMyVar = 1); UpdateData(False); }
-
Servus,
danke für den Tipp. Hat Leider nicht gefunzt. In einer SDI- oder MDI-App
klappt es ja auch ohne UpdateData. Wahrscheinlich muss man in einer dialogfeldbasierenden App noch irgendwie etwas berücksichtigen. Naja trotzdem danke.MFG
-
Ist euch mal aufgefallen, dass folgendes absolut sinnlos ist?
void CUmrechnungApp::OnUpdateMenueintrag(CCmdUI* pCmdUI) { m_bMyVar = ID_MENUEINTRAG; pCmdUI->SetCheck(m_bMyVar = 1); UpdateData(False); }m_bMyVar zuerst ID_MENUEINTRAG, und dann 1 zuweisen.. wo soll da der sinn sein? Und wenn es überprüft werden soll, ob es gleich 1 ist, muss es
pCmdUI->SetCheck(m_bMyVar == 1);
heißen.
Übrigens versteh ich auch dann nicht den Sinn, m_bMyVar den Wert ID_MENUEINTRAG zuzuweisen, da ID_MENUEINTRAG (wahrscheinlich ) ne konstante ist, und von daher diese Zweisung bzw. die anschließende Überprüfung auf 1 hin sowieso irgendwie keinen Sinn ergibt.[ Dieser Beitrag wurde am 15.12.2002 um 23:28 Uhr von DerGhost editiert. ]
-
Hi,
DerGhost hat natürlich recht. Aber darum gehts nicht. So hab ich das in meiner App auch nicht geschrieben. Das war nur ein schnell eingetipptes Beispiel um zu zeigen was ich meine. Ist unlogisch, geb ich zu.
Mein Problem ist, dass bei mir SetCheck in einer dialogfeldbasierenden Anwendung
GRUNDSÄTZLICH nicht funktioniert. Der Compiler gibt auch keine Fehlermeldung. Es sind einfach keine Häkchen zu sehen.void CUmrechnungApp::OnUpdateMenueintrag(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(1); // in einer SDI- oder MDI-App funzt das
}Deswegen meine Frage: Ist euch so was ähnliches auch passiert und wie kann man es beheben.
-
Versuch mal per Debugger rauszufinden ob es überhaupt zum aufruf kommt (hatte schon mal ein Problem, dass Die Funktion, von der ich dachte, sie wäre dem Menüeintrag zugewiesen, wegen eigenen Modifizierungen nicht wirklich zugewiesen war).
Außerdem sollte man wohl generell TRUE und FALSE, nicht interger-Werte wie 1 und 0 benutzen (macht zwar keinen unterschied ist aber wohl besserer Programmierstil.. und es ist warhscheinlich weniger Fehleranfällig).
-
Hi, falls von Interesse:
"Eine nachträglich mit einem Menü versehene dialogfeldbasierende Anwendung
löst das Ereignis UPDATE_COMMAND_UI nicht automatisch vor der Anzeige aus."
(Scheibl, S. 330)so geht's:
void CDlgMenuDlg::OnF1() { if(m_bSelect) { m_bSelect = FALSE; ((CMenu*)GetMenu())->CheckMenuItem(IDM_F1, MF_UNCHECKED); } else { m_bSelect = TRUE; ((CMenu*)GetMenu())->CheckMenuItem(IDM_F1, MF_CHECKED); } }Mfg
CurlyBrace
-
Hi CurlyBrace,
der Herr sei gelobt und gepriesen. Endlich hat jemand verstanden was ich meine.
Hat gefunzt. Habe in zwei Wälzern von Microsoft Press nachgeschaut, da steht nichts. Danke vielmals.MFG
-
hallo burnsy

-
Hallo Priester
-

-
Burnsy schrieb:
Hi CurlyBrace,
der Herr sei gelobt und gepriesen. Endlich hat jemand verstanden was ich meine.
Hat gefunzt. Habe in zwei Wälzern von Microsoft Press nachgeschaut, da steht nichts. Danke vielmals.MFG
aber bei Microsoft:
http://support.microsoft.com/kb/q242577/