SwordMaster Geschrieben 8. Juli 2003 Geschrieben 8. Juli 2003 Hi, versuch grad ein Menü hinzubekommen. *verzweifel* Entweder ich bin zu müde, oder ich bin blind, auf jedenfall krieg ichs nicht hin.. ich bräuchte ein menüItem dass man an und auskreuzen kann..... Hätte für das Item eine Command-Funktion angelegt.... und wollte es so machen... if (kein hacken im menüItem??) menu.CheckMenuItem(ID_HACKEN, MF_CHECKED); else menu.CheckMenuItem(ID_HACKEN, MF_UNCHECKED); Ich kann den Hacken schon setzen, und wieder enfernen... aber wie kann ich rausfinden ob der hacken momentan da ist oder nciht?!? Hab gehört es soll mit GetMenuState gehn, habs aber irgendwie nicht hingebracht! Könnt ihr mir helfen???? Danke SwordMaster Zitieren
Klotzkopp Geschrieben 8. Juli 2003 Geschrieben 8. Juli 2003 Schau dir mal CMenu::GetMenuState an. Zitieren
SwordMaster Geschrieben 8. Juli 2003 Autor Geschrieben 8. Juli 2003 Hab doch schon geschrieben dass ichs mit GetMenuState nicht hinbringe :°( Hab folgendes probiert if (menu.GetMenuState(ID_ITEM, MF_BYPOSITION)==MF_UNCHECKED) menu.CheckMenuItem(ID_ITEM, MF_CHECKED); else menu.CheckMenuItem(ID_ITEM, MF_UNCHECKED); habs auch mit menu.GetMenuState(ID_ITEM, MF_BYCOMMAND)==MF_UNCHECKED probiert.... hab in der MSDN nach beispielen gesucht ... da sind komische beispiele mit dem binären & Operator gestanden... hab ich alles nicht zum laufen gebracht!! Kannst mir sagen was ich falsch mache?! Zitieren
Guybrush Threepwood Geschrieben 8. Juli 2003 Geschrieben 8. Juli 2003 Probier mal ob GetMenuState() 0xFFFFFFFF zurück gibt, dann kennt er das Menüitem nämlich nicht. Achso, der Haken schreibt sich ohne c;) Zitieren
Klotzkopp Geschrieben 8. Juli 2003 Geschrieben 8. Juli 2003 GetMenuState liefert nicht nur die Information, ob der Menüeintrag "gecheckt" ist oder nicht, sondern eine Vielzahl von Daten. Du musst die für dich relevanten Information erst herausfiltern, bevor du auf Gleichheit prüfst: if( ( menu.GetMenuState( ID_ITEM, MF_BYPOSITION ) & ( MF_CHECKED | MF_UNCHECKED ) ) == MF_UNCHECKED ) Das & bedeutet, dass du aus dem Rückgabewert von GetMenuState alles ausblendest, was nicht MF_CHECKED oder MF_UNCHECKED ist. Da MF_UNCHECKED 0 ist, geht auch folgendes: if( !( menu.GetMenuState( ID_ITEM, MF_BYPOSITION ) & MF_CHECKED ) ) Aber die erste Version ist "sauberer", zumal MS zumindest theoretisch die Werte der Konstanten ändern könnte. Zitieren
Empfohlene Beiträge
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.