Frage

Wenn in Visual Studio-Debugger eine alte MFC-Anwendung ausgeführt Ich habe eine Menge Warnungen im Ausgabefenster wie folgt gesehen:

  

. Achtung: das Überspringen nicht-Optionsfeld in der Gruppe

Ich verstehe, dass in MFC Sie Radio-Buttons in Gruppen, um anzuzeigen, setzen die gemeinsam von Radiobuttons setzt gehen. Wenn ich mich richtig erinnere Sie dies tun, indem Sie die „Gruppe“ Eigenschaft des ersten Optionsfeld auf true setzen, und dann den Rest der Radiobuttons „Gruppe“ Eigenschaft auf false.

Ich habe drei Fragen zu dieser Warnung.

  1. Wie wird man diese Warnung wieder los? Machen Sie haben die „Gruppe“ Eigentum aller setzen Nicht-Radio-Button-Steuerelemente auf true vermeiden, oder sollten Sie nur einstellen es für die erste Kontrolle nach dem letztes Optionsfeld?

  2. Gibt es einen einfachen Weg, um Sie heraus, was steuert oder Dialoge haben dieses Problem? Ich kann jeden Dialog öffnen und Geige mit ihm, bis der Warnung aufpoppen. Diese Anwendung hat eine Menge obwohl Dialoge, so wäre es schön, wenn es ein einfacherer Weg.

  3. Was negatives Verhalten kann auftreten, wenn Sie diese Warnung nicht beheben? In anderen Worte, bedeutet dies auch eine Rolle?

War es hilfreich?

Lösung

Die Warnung bedeutet, dass es eine gewisse Kontrolle andere als ein Optionsfeld in der Tab-Reihenfolge zwischen den ersten und den letzten Radio-Buttons in der Gruppe. Eine Steuerung mit dem WS_GROUP Stil Satz markiert den Beginn einer Gruppe.

Um dies zu beheben, verwenden Sie den Dialog-Editor auf die Registerkarte zu ändern, und stellen Sie sicher, dass alle Radiobuttons fortlaufend nummeriert sind. Ein anderer Weg, dies zu tun wäre, um die RC-Datei in einem Texteditor zu öffnen und die Reihenfolge der Anweisungen innerhalb jeder Dialogressource ändern (die Tab-Reihenfolge einfach durch die Reihenfolge, in der definiert ist, die Kontrollen aufgelistet sind).

Ich glaube, Sie diese Warnung ignorieren, sofern das Optionsfeld Gruppierung korrekt funktioniert.

Andere Tipps

Zwischen den Antworten hier und einigen Recherchen in alten Foren Ich glaube, ich habe zumindest herausgefunden, wie meine Probleme zu beheben. Hier ist, was ich für meine oben genannten Fragen gefunden werden.

  1. ChrisN und Smashery schlug vor, dass ich die Tabs neu anordnen, dass Radio-Buttons, um der Reihe nach geordnet sind, und dies taten einige der Warnungen beheben.
    Zusätzlich kann die erste Steuer in der Tab-Reihenfolge nach dem Gruppenoptionsfeld muss die WS_GROUP Eigenschaft gesetzt haben (oder die Gruppe-Eigenschaft auf true im Editor gesetzt). Dies teilt MFC, dass die Optionsfeld-Gruppe beendet ist. Ohne sie alle verbleibenden Kontrollen in der Tab-Reihenfolge bis zum nächsten WS_GROUP werden die Warnung erzeugen. Nachdem ich diese beiden Dinge, die die Warnungen in diesen Dialogen ging.

  2. Dies ist immer noch eine offene Frage, ich habe keinen guten Weg finden, um diese Probleme zu finden, ohne jeden Dialog zu öffnen und warten auf Warnungen.
    Wenn Sie ein Dialog schafft diese Warnung wissen, aber Sie wissen nicht, welche Kontrolle verursacht es, können Sie einen Haltepunkt in der DDX_Radio () Funktion auf der TRACE () -Aufruf gesetzt, die die Warnung generiert. Dies macht es einfacher, die spezifische Kontrolle zu identifizieren, die über beschwert wird.

  3. ich mit ChrisN einverstanden sind, kann ich mir nicht aus irgendeinem Grund für diese Warnung anderer als Sie überprüfen Sie Ihre Registerkarte zu machen, um verdoppeln. In anderen Ländern Online kann ich keine andere Referenz auf ein Problem feststellen, dass dies verursachen könnte.

Vielleicht ist Ihre Tab-Reihenfolge (Format / Tab-Reihenfolge) überprüfen - klingt wie Sie eine normale Drucktaste in der Mitte einer Gruppe von Radiobuttons haben. Wenn in der Tat das das Problem ist, können Sie dieses Problem beheben, indem das Format / Tab-Reihenfolge Menüpunkt, und dann in der richtigen Reihenfolge auf den Kontrollen klicken.

Für Punkt 2, weshalb ich glaube, dass Sie diese unbeantwortet zu halten ist, kann ich nichts vorstellen Einfachere dann eine Textsuche zu tun (* .rc) für alle Dialoge mit Radio-Buttons. Für jeden Treffer einer Sichtkontrolle des Ressourcencodes für dieses Problem und korrigieren. Ich würde es tun, von Hand in der Quelle der Ressourcendatei vs. versuchen, mit den GUI-Designern zu spielen.

Für das, was es wert ist, ich 3 hatte Radio-Buttons in der richtigen Tab-Reihenfolge (in RC-Datei bestätigt, ohne Probleme, nachdem es) und bekam noch warnen. Haltepunkt in DDX_Radio zeigte, dass 2. und 3. Radiobuttons wurden als nicht-Radio gemeldet werden! Sah in resource.h und entdeckte erstes Optionsfeld ID 1313 mit und die anderen zwei mit 1311 und 1312. Setzen Sie sie in der gewünschten Tab-Reihenfolge und neu nummerierte die IDs passen und Problem gelöst. Erraten Sie die GetWindow GW_HWNDNEXT irgendwie in Auftrag Identifikation nicht Tab verknüpft, obwohl Radiogruppe gearbeitet. Hinweis: noch Visual C ++ v6

mit
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top