GCRACK Geschrieben 2. April 2002 Geschrieben 2. April 2002 Hi, Folgender Fall: Ich hab ne Autocheckbox erstellt und möchte deren Status abfragen! Dazu hab ichs mit folgender Funktion versucht: LRESULT Test; Test = SendMessage(hwndButton[2], BM_GETCHECK, 0, 0); Das ganze lässt sich ohne Fehlermeldung ausführen, nur steht dann in Test immer der Wert 0 drin, in meinem Fall kann der Rückgabewert aber nur BST_CHECKED oder BST_UNCHECKED sein! Die Autocheckbox wurde folgendermaßen erstellt: hwndButton[2] = CreateWindow(TEXT("button"), button[2].szText, WS_CHILD | WS_VISIBLE | button[2].iStyle, i_cxChar, i_cyChar * (1 +2 * 2), 20 * i_cxChar, 7 * i_cyChar / 4, hwnd, (HMENU) 2, ((LPCREATESTRUCT) lParam)->hInstance, NULL); Bei hwndButton[2] handelt es sich definitiv um eine Autocheckbox, somit wäre der Wert 0 laut MSDN eigentlich nicht möglich! Für sachdienliche Hinweise die zum Auffinden des Fehlers führen wird eine Belohnung in Höhe von 1001 Dank ausgesetzt!
Klotzkopp Geschrieben 2. April 2002 Geschrieben 2. April 2002 Dann stelln wir uns mal janz dumm Enthält button[2].iStyle BS_AUTOCHECKBOX?
GCRACK Geschrieben 2. April 2002 Autor Geschrieben 2. April 2002 Also es wurde folgendermaßen deklariert: struct { int iStyle; TCHAR * szText; } button[] = { BS_DEFPUSHBUTTON, TEXT("Start"), BS_PUSHBUTTON, TEXT("Abbrechen"), BS_AUTOCHECKBOX, TEXT("TEST1"), BS_AUTOCHECKBOX, TEXT("TEST2") }; folglich sollte beim Aufruf button[2].iStyle doch BS_AUTOCHECKBOX drinnstehen! Oder mach ich da nen gedankenfehler??
GCRACK Geschrieben 2. April 2002 Autor Geschrieben 2. April 2002 Ups, SORRY, hab die wichtigste Aussage ja in meinem ersten Beitrag vergessen! :eek: Es wird auch dann 0 zurückgeliefert, wenn die Autocheckbox ein Häckchen enthält! Dieses Häckchen wurde vorher durch: Test = SendMessage(hwndButton[2], BM_SETCHECK, BST_CHECKED, 0); erstellt!
GCRACK Geschrieben 2. April 2002 Autor Geschrieben 2. April 2002 BM_GETSTATE liefert auch immer 0! Langsam kommt mir das ganze sehr komisch vor!
Klotzkopp Geschrieben 2. April 2002 Geschrieben 2. April 2002 Kannst Du mit dem Spy++ prüfen, ob die Message an der richtigen Checkbox ankommt?
Goos Geschrieben 2. April 2002 Geschrieben 2. April 2002 Und das mit dem Häckchen setzen funktioniert auch wirklich? Kommt das an und kannste das sehen, oder fragst danach gleich obs gsetzt ist?
GCRACK Geschrieben 2. April 2002 Autor Geschrieben 2. April 2002 Also, laut Spy++ kommt der Befehl BM_SETCHECK an der richtigen Autocheckbox an! Von BM_GETCHECK steht in der Liste aber nix! Und selbst wenn ich direkt vor der Statusabfrage den Status mittels SETCHECK festleg´ wird nicht der richtige Status ermittelt!
Klotzkopp Geschrieben 2. April 2002 Geschrieben 2. April 2002 BM_SETCHECK sendet Windows bei einer AutoCheckBox automatisch, wenn die nicht ankommen würde, solltest Du Dir ernsthaft sorgen machen Dass aber BM_GETCHECK nicht ankommt, kann eigentlich nur bedeuten, dass Du die Nachricht an das falsche Fenster schickst. Wird vielleicht hwndButton[2] irgendwo überschrieben?
GCRACK Geschrieben 2. April 2002 Autor Geschrieben 2. April 2002 Also um bei ner AUTOCHECKBOX ein Häckchen zu setzen muss ich doch doch trotzdem SETCHECK aufrufen, ansonsten gehts ned! Hab es nochma durchgeschaut, hwndButton[2] wird auch an keiner Stelle überschrieben!
Klotzkopp Geschrieben 2. April 2002 Geschrieben 2. April 2002 Eine AutoCheckBox setzt und löscht das Häkchen normalerweise automatisch, wenn Du reinklickst. Sonst würde sie sich ja ncht von einer normalen Checkbox unterscheiden. Klappt das etwa auch nicht?
GCRACK Geschrieben 2. April 2002 Autor Geschrieben 2. April 2002 Doch, das automatisch setzen beim Klicken klappt schon, nur musste ich SETCHECK ausführen, um das Häckchen von Programmbeginn an gesetzt zu haben!
GCRACK Geschrieben 2. April 2002 Autor Geschrieben 2. April 2002 Würde es dir vielleicht helfen wenn ich mal ein Codefragment maile, in dem das setzen und abrufen des Status enthalten ist??
Goos Geschrieben 2. April 2002 Geschrieben 2. April 2002 ach und erzaehlt mir dann bitte worans lag ...bin halt neugierig. Ich habs mal so grob nachgebaut und bei mir ging "leider" alles wie es sollte. Goos
GCRACK Geschrieben 3. April 2002 Autor Geschrieben 3. April 2002 Soderle, sorry das gestern keine mail angekommen ist, aber Outlook stellte sich stur! Das Problem hat sich aber glücklicherweise erledigt! Das kuriose an der ganzen Sache war dass laut Debugger ein Handle ungültig war! Alles noch mal durchgechecked - keinen fehler gefunden! Nachdem sich Visual Studio aufgehängt hatte und anschliessend neu gestartet werden musste funktionierte es einwandfrei! Keine Ahnung was los war!! Trotzdem vielen Dank für die superschnelle Hilfe! :cool:
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