본문 바로가기

SDI

SDI(or MDI)에서 View를 포함하는 Dialog 띄울 때 문제점 SDI 형식에서 View를 포함하는 Dialog를 생성하면 문제점이 발생합니다.먼저 메뉴를 클릭하면 다이얼로그가 DoModal()을 통해서 생성이 됩니다.DoModal()로 생성된 다이얼로그 내부에서 CView나 CView를 상속한 뷰를 생성해서 포함시킵니다.다이얼로그 내부에서 뷰를 컨트롤처럼 추가하는 것입니다.이렇게 했을 때 다이얼로그의 내부 뷰 영역을 마우스로 클릭하면 문제가 발생합니다. ASSERT(pParentFrame == pDesktopWnd || pDesktopWnd->IsChild(pParentFrame)); 바로 위와같은 ASSERT문에 걸리게 됩니다.문제의 원인은 다음과 같습니다.SDI 형태는 MainFrame이 있고 그 안에 View가 들어갑니다.MainFrame에 바로 붙는 View.. 더보기
SDI Document/View 구조 제거하기 MFC의 SDI(Single Document Interface)는 기본적으로 Document/View 구조를 지원합니다.프로젝트를 생성할 때 몇 번의 클릭으로 간단하게 Document/View 기반으로 생성할 수 있습니다.자동으로 생성되는 Doc/View 구조가 필요하지 않을 경우도 발생합니다.SDI에서 Doc/View 구조를 제거하는 방법입니다.먼저 프로젝트를 생성합니다.일단 Document/View architecture support는 그대로 둡니다. Doc/View가 설정된 프로젝트에서 구조를 제거하기 위해서 입니다.Compound Document Support, Document Template Properties는 기본 설정을 사용합니다.그리고 Database Support도 기본 설정으로 둡니.. 더보기
MFC 다이얼로그, SDI, MDI의 최소 크기(Size) 설정 MFC에서 프로젝트를 만들 때 SDI, MDI, 다이얼로그 중에 하나를 선택합니다.만들어진 창이 최소 크기나 최대 크기가 정해지면 좋을 때가 있습니다.버튼들이 배치가 되어있는데 창이 타이틀만 남겨놓고 줄어드는 것은 그리 좋아 보이지 않습니다.이 창들의 최소 크기를 정하는 방법을 알아보겠습니다.같은 방법으로 이 방법으로 최대 크기의 수정도 가능합니다.먼저 프로젝트를 생성하면 다음과 같이 MainFrm.h가 생깁니다.SDI, MDI에서는 MainFrm.h이지만 다이얼로그에서는 약간 다르게 생성이 됩니다.프로젝트명Dlg.h 라는 파일이 생기게 됩니다.각자 해당하는 파일을 엽니다.여기서는 SDI를 기준으로 설명하겠습니다.헤더 파일에 커서를 주면 좌측에 속성에 다음과 같이 나오게 됩니다.그럼 빨간색 네모 안의 아.. 더보기