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
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?!
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;)
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden