본문 바로가기
Study/MFC

Debug Assertion Failed! ... File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dlgdata.cpp Line: 269

by 뿡뿡대마왕 2011. 12. 5.
반응형

으하하..저번에도 이어 이번에도 위와 같은 에러가 발생하였다.

저번에 저런식의 에러는 분명이 컨트롤 ID를 잘못입력해서 발생했던것으로 기억하고

DoDataExchange 함수를 살펴보았다
오잉?? 모야 없는데??

문제가 되는 부분은 라디오 버튼..;;;

그래서 아래와 같이 라디오 버튼만 하나 달랑 남겨두고 테스트를 진행하였다..

-----------------------------------------------------------------------------

void CTest_1Dlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

DDX_Control(pDX, IDCANCEL, dddd);

DDX_Radio(pDX, IDC_RADIO1, btn_radio); //-> 문제가 발생되는 부분.

}
-----------------------------------------------------------------------------

문제가 되는 부분에서 아래와 같은 에러 발생!!


뭘까?? 이런...

위 소스에는 분명 문제가 없어 보이는데...


 원인은 바로  Group에서 False로 설정되어 있던것!!
저부분을 TRUE로 변경하면 우와 같은 에러는 없어진다.

저 그룹은 무엇이냐 하면..간단히 말해서 아래와 같이 여러개의 라디오 버튼이 있다고 치면

그룹을 하나로 묵으면 아래의 라디오 버튼중에 하나만 체크된다.

                                                                                  <그림 1>


위 라디오버튼을 세그룹으로 나누게 되면 아래처럼 체크가 3개가 들어간다.

                                                                                <그림 2>



그룹을 나누는 방법은 간단하다.
제일 처음 라디오 버튼 속성을 TRUE로 하고 나머지는 FALSE로 하면 하나의 그룹

두그룹으로 할려면 우선 원하는 만큼의 한그룹을 하고 다시 묶을 놈부터 속성을 TRUE 나머지는 다시 FALSE로 하면된다.
말이 좀 어려얼수 있으니 위 <그림 2>의 각 라디오 버튼의 그룹속성을 보면 아래와같다.
  
                       TRUE       FALSE         FALSE     FALSE  : -> 한그룹
                                   TRUE       FALSE        FALSE     FALSE   : -> 두번째 그룹
                                   TRUE       FALSE        FALSE     FALSE   : -> 세번째 그룹!   

즉 다음 그룹 속성이 TRUE가 나올때가지 한그룹으로 진행되는 것이다..
그러고 여기서 주의해야 할것은 각 라디오 버튼들의 컨트롤 ID가 순서대로 진행되야 한다는 점!!
번호가 뒤죽박죽이면 안된다~~
  


반응형

댓글