MFC “경고:그룹에서 라디오가 아닌 버튼을 건너뛰는 중입니다.'

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

  •  02-07-2019
  •  | 
  •  

문제

Visual Studio의 디버거에서 이전 MFC 애플리케이션을 실행할 때 출력 창에 다음과 같은 많은 경고가 표시되었습니다.

경고:그룹에서 라디오가 아닌 버튼을 건너뛰는 중입니다.

MFC에서는 어떤 라디오 버튼 세트가 함께 사용되는지 나타내기 위해 라디오 버튼을 그룹으로 묶는 것으로 알고 있습니다.제 기억이 맞다면 첫 번째 라디오 버튼의 "그룹" 속성을 true로 설정하고 나머지 라디오 버튼의 "그룹" 속성을 false로 설정하면 됩니다.

이 경고에 대해 세 가지 질문이 있습니다.

  1. 이 경고를 어떻게 제거합니까?이를 피하기 위해 모든 비 라디오 버튼 컨트롤의 "그룹"속성을 true로 설정해야합니까, 아니면 마지막 라디오 버튼 이후 첫 번째 컨트롤로 설정해야합니까?

  2. 어떤 컨트롤이나 대화 가이 문제가 있는지 알아내는 쉬운 방법이 있습니까?경고가 나타날 때까지 각 대화 상자를 열고 바이올린을 열 수 있습니다.이 응용 프로그램에는 대화 상자가 많기 때문에 더 쉬운 방법이 있으면 좋을 것입니다.

  3. 이 경고를 고치지 않으면 어떤 부정적인 행동이 발생할 수 있습니까?다시 말해, 이것이 중요합니까?

도움이 되었습니까?

해결책

경고는 그룹의 첫 번째 라디오 버튼과 마지막 라디오 버튼 사이의 탭 순서에 라디오 버튼 이외의 컨트롤이 있음을 의미합니다. 컨트롤 WS_GROUP 스타일 세트는 그룹의 시작을 표시합니다.

이 문제를 해결하려면 대화 상자 편집기를 사용하여 탭 순서를 변경하고 모든 라디오 버튼이 순차적으로 번호가 매겨 졌는지 확인하십시오. 이를 수행하는 또 다른 방법은 텍스트 편집기에서 .rc 파일을 열고 각 대화 자원 내에서 문의 순서를 변경하는 것입니다 (탭 순서는 컨트롤이 나열된 순서로 간단히 정의됩니다).

라디오 버튼 그룹화가 올바르게 작동한다면이 경고를 안전하게 무시할 수 있다고 생각합니다.

다른 팁

여기 답변과 이전 포럼의 일부 연구를 통해 적어도 내 문제를 해결하는 방법을 알아낸 것 같습니다.위의 질문에 대해 제가 알아낸 내용은 다음과 같습니다.

  1. ChrisN과 Smashery는 라디오 버튼이 순차적으로 정렬되도록 탭 순서를 다시 지정할 것을 제안했으며 이로 인해 일부 경고가 수정되었습니다.

    또한 라디오 버튼 그룹 뒤의 탭 순서에서 첫 번째 컨트롤에는 WS_GROUP 속성이 설정되어 있어야 합니다(또는 편집기에서 그룹 속성이 true로 설정되어 있어야 함).이는 라디오 버튼 그룹이 종료되었음을 MFC에 알립니다.이것이 없으면 다음 WS_GROUP이 경고를 생성할 때까지 탭 순서에 남아 있는 모든 컨트롤이 표시됩니다.이 두 가지 작업을 모두 수행한 후에는 이 대화 상자의 경고가 사라졌습니다.

  2. 이것은 아직 공개된 질문이므로 각 대화 상자를 열고 경고를 기다리지 않고 이러한 문제를 찾을 수 있는 좋은 방법을 찾지 못했습니다.

    대화 상자가 이 경고를 생성한다는 것을 알고 있지만 어떤 컨트롤이 이를 유발하는지 모르는 경우 경고를 생성하는 TRACE() 호출의 DDX_Radio() 함수에 중단점을 설정할 수 있습니다.이렇게 하면 문제가 있는 특정 컨트롤을 더 쉽게 식별할 수 있습니다.

  3. 나는 ChrisN의 의견에 동의합니다. 탭 순서를 다시 확인하도록 하는 것 외에는 이 경고가 발생하는 이유가 생각나지 않습니다.온라인의 다른 곳에서는 이로 인해 발생할 수 있는 문제에 대한 다른 참조를 찾을 수 없습니다.

아마도 탭 순서를 확인할 수 있습니다 (형식/탭 순서) - 라디오 버튼 그룹 중간에 일반 푸시 버튼이있는 것처럼 들립니다. 실제로 문제가있는 경우 형식/탭 순서 메뉴 항목을 사용하여 올바른 순서로 컨트롤을 클릭 하여이 문제를 해결할 수 있습니다.

포인트 2의 경우, 당신이 이것을 응답하지 않은 것으로 생각하는 이유는, 나는 라디오 버튼이있는 모든 대화 상자에 대해 텍스트 검색 (*.rc)을 수행 할 수 없습니다. 각각 마다이 문제에 대한 리소스 코드를 시각적으로 검사하고 수정하십시오. 리소스 파일의 소스에서 GUI 디자이너와 함께 플레이하려고 노력하는 것입니다.

그 가치가있는 것에 대해, 나는 올바른 탭 순서에 3 개의 라디오 버튼을 가지고 있었고 (문제가없는 .rc 파일로 확인 됨) 여전히 경고를 받았습니다. DDX_RADIO의 중단 점은 2 차 및 세 번째 라디오 버튼이 비 라디오로보고되고 있음을 보여주었습니다! Resource.h를 보았고 ID 1313과 1311과 1312를 사용하여 1st 라디오 버튼을 발견했습니다. 원하는 탭 순서에 넣고 ID를 정상 및 문제 해결으로 흡수했습니다. getwindow gw_hwndnext는 라디오 그룹이 작동하더라도 탭 순서가 아닌 ID 순서로 연결되어 있다고 생각합니다. 참고 : 여전히 Visual C ++ v6을 사용하고 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top