MFC & # 8220; Advertencia: omitiendo el botón que no es de radio en el grupo. & # 8221;

StackOverflow https://stackoverflow.com/questions/130496

  •  02-07-2019
  •  | 
  •  

Pregunta

Al ejecutar una aplicación MFC antigua en el depurador de Visual Studio, he visto muchas advertencias en la ventana Salida como las siguientes:

  

Advertencia: omitiendo el botón que no es de radio en el grupo.

Entiendo que en MFC pones los botones de radio en grupos para indicar qué conjuntos de botones de radio van juntos. Si recuerdo correctamente, debe hacer esto configurando el "grupo" propiedad del primer botón de opción en verdadero, y luego configure el resto de los botones de opción "grupo" propiedad a falso.

Tengo tres preguntas sobre esta advertencia.

  1. ¿Cómo se deshace de esta advertencia? Hacer tienes que configurar el "grupo" propiedad de todos controles de botón que no son de radio a fiel a evite esto, o simplemente debe configurar para el primer control después de la último botón de radio?

  2. ¿Hay una manera fácil de imaginar ¿Qué controles o diálogos tienen este problema? Podría abrir cada diálogo y jugar con él hasta la advertencia aparece. Esta aplicación tiene mucha diálogos sin embargo, por lo que sería agradable si hubiera una manera más fácil.

  3. ¿Qué comportamiento negativo puede ocurrir si no arreglas esta advertencia? En otra palabras, ¿esto importa?

¿Fue útil?

Solución

La advertencia significa que hay otro control que no sea un botón de radio en el orden de tabulación entre el primer y el último botón de radio del grupo. Un control con el conjunto de estilos WS_GROUP marca el inicio de un grupo.

Para solucionar esto, use el editor de diálogo para cambiar el orden de las pestañas y asegúrese de que todos los botones de radio estén numerados secuencialmente. Otra forma de hacerlo sería abrir el archivo .rc en un editor de texto y cambiar el orden de las declaraciones dentro de cada recurso de diálogo (el orden de tabulación se define simplemente por el orden en que se enumeran los controles).

Creo que puede ignorar esta advertencia de forma segura, siempre que la agrupación de botones esté funcionando correctamente.

Otros consejos

Entre las respuestas aquí y algunas investigaciones en foros antiguos, creo que he descubierto al menos cómo solucionar mis problemas. Esto es lo que descubrí para mis preguntas anteriores.

  1. ChrisN y Smashery me sugirieron que reordene las pestañas para asegurarme de que los botones de radio estén ordenados secuencialmente, y esto solucionó algunas de las advertencias.

    Además, el primer control en el orden de tabulación después del grupo de botones de radio debe tener la propiedad WS_GROUP establecida (o la propiedad del grupo establecida en verdadero en el editor). Esto le dice a MFC que el grupo de botones de radio ha finalizado. Sin él, todos los controles restantes en el orden de tabulación hasta el siguiente WS_GROUP generará la advertencia. Después de hacer ambas cosas, las advertencias en estos cuadros de diálogo desaparecieron.

  2. Esta sigue siendo una pregunta abierta, no encontré una buena manera de localizar estos problemas sin abrir cada cuadro de diálogo y esperar advertencias.

    Si sabe que un diálogo está creando esta advertencia pero no sabe qué control lo está causando, puede establecer un punto de interrupción en la función DDX_Radio () en la llamada TRACE () que genera la advertencia. Esto puede facilitar la identificación del control específico del que se está quejando.

  3. Estoy de acuerdo con ChrisN, no puedo pensar en ninguna otra razón para esta advertencia que no sea hacer que verifique su orden de tabulación. En otro lugar en línea no puedo encontrar ninguna otra referencia a un problema que esto pueda causar.

Quizás revise su orden de tabulación (Formato / Orden de tabulación) - suena como si tuviera un botón normal en el medio de un grupo de botones de radio. Si efectivamente este es el problema, puede solucionarlo utilizando el elemento de menú Formato / Orden de tabulación y luego haciendo clic en los controles en el orden correcto.

Para el punto 2, por lo que supongo que está manteniendo esto sin respuesta, no puedo imaginar nada más simple que hacer una búsqueda de texto (* .rc) para todos los diálogos con botones de radio. Para cada golpe, inspeccione visualmente el código de recurso para este problema y corríjalo. Lo haría a mano en la fuente del archivo de recursos en lugar de intentar jugar con el diseñador de interfaz gráfica de usuario.

Por lo que vale, tenía 3 botones de radio en el orden de tabulación correcto (confirmado en el archivo .rc sin problemas después) y aún recibí una advertencia. ¡El punto de interrupción en DDX_Radio mostró que los botones de radio segundo y tercero se informaban como no radio! Busqué en resource.h y descubrí el primer botón de radio con ID 1313 y otros dos con 1311 y 1312. Póngalos en el orden de tabulación deseado y vuelva a numerar los ID para adaptarlos y resolver el problema. Supongo que el GetWindow GW_HWNDNEXT está vinculado de alguna manera en el orden de identificación, no en el orden de tabulación, a pesar de que el grupo de radio funcionó. Nota: sigue usando Visual C ++ v6

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top