Veröffentlicht 29. Juli 200322 j Hi versuch mich gerade wieder ein einem Menü mit menu.CheckMenuRadioItem(ID_PUNKT_TEST1,ID_PUNKT_TEST2,ID_PUNKT_TEST1, MF_BYCOMMAND) kann ich RadioButtons im Menü setzen Aber die Funktion die bei ID_PUNKT_TEST1 ausgeführt wird, soll nicht zwei mal hintereinander ausgeführt werden, d.h. ich müßte prüfen ob der radioButton bei ID_PUNKT_TEST1 schon gesetzt ist oder nicht.... aber genau das herauszufinden schaffe ich leider nicht... Ich habs mit dem Rückgabewert von CheckMenuRadioItem probiert, aber der sagt dass es immer "erfolgreich" ist.... und mit GetItemState bin ich leider auch nicht weitergekommen. Hab mal Häckchen im Menü gesetzt da hab ich mit if (menu.GetMenuState(ID_KONTEXTMEN_TEST, MF_BYCOMMAND)==MF_UNCHECKED) prüfen können aber ich finde keinen passenden rückgabewert der für Radiobuttons steht!! Kann mir jemand helfen?!?!
30. Juli 200322 j Autor Den Thread den du mir verlinkt hast, hab ich selbst eröffnet ) Damals hab ich versucht so einen Hacken zu setzen und herauszufindne ob der hacken schon da ist oder nicht.... aber jetzt versuch ich wie gesagt die radiobuttons aber diesmal komm ich mit getMenuState nicht weiter! Da ich keinen Passenden Rückgabewert von getmenustate finde der auf Radiobuttons zutrifft MF_CHECKED bzw. MF_UNCHECKED trifft nur auf die hacken zu und mit den anderen rückgabewerten hatte ich auch keinen erfolg
30. Juli 200322 j Original geschrieben von SwordMaster Den Thread den du mir verlinkt hast, hab ich selbst eröffnet ) Upps, sorry:rolleyes: Da hab ich im Eifer des Gefechts gar nicht drauf geachtet:D
30. Juli 200322 j Original geschrieben von SwordMaster MF_CHECKED bzw. MF_UNCHECKED trifft nur auf die hacken zu Eigentlich sollten Radiobuttons die gleichen State-Werte benutzen. Hast du versucht, die relevanten Daten aus dem Rückgabewert rauszufiltern, anstatt einfach zu vergleichen?
30. Juli 200322 j Vergleichen alleine reicht vermutlich nicht. Markieren heißt das stichwort: if (GetMenuState(ID_x, MF_BYCOMMAND) && MF_UNCHECKED == MF_UNCHECKED) { // bla } oder if (GetMenuState(ID_x, MF_BYCOMMAND) || MF_UNCHECKED) { // bla } Laut MSDN müssten die gleichen Stats für Radiomenus verwendet werden weil des Windows nur des Radionsymbol dahin malt wo der Haken normalerweise ist. Aber versuch doch das ganze mal mit einer nicht-obsolate-funktion wie GetMenuItemInfo. Hoffe das hilft dir vielleicht Diablo999
30. Juli 200322 j Original geschrieben von Diablo999 if (GetMenuState(ID_x, MF_BYCOMMAND) && MF_UNCHECKED == MF_UNCHECKED) == bindet stärker als &&, also wird MF_UNCHECKED == MF_UNCHECKED ausgewertet. Außerdem macht der logische und-Operator keinen Sinn, der bitweise Operator wäre der richtige. Drittens ist MF_UNCHECKED gleich Null, d.h. auch mit Klammern und & statt && ist dieser Ausdruck immer wahr. if (GetMenuState(ID_x, MF_BYCOMMAND) || MF_UNCHECKED) Das logische oder macht gar keinen Sinn. Dieser Ausdruck ist wahr, wenn GetMenuState einen von Null verschiedenen Wert zurückgibt. Aber im Thread, auf den Guybrush Threepwood verlinkt hat, habe ich das alles eigentlich schonmal erklärt.
30. Juli 200322 j Upsala, hast du mich erwischt... hab nicht so richtig nachgedacht, naja is halt so ciao Diablo999
31. Juli 200322 j Original geschrieben von Klotzkopp Aber im Thread, auf den Guybrush Threepwood verlinkt hat, habe ich das alles eigentlich schonmal erklärt. Sag ich doch:floet:
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.