728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 대화 상자 실습

 

이번 글에서는 이전에 소개한 대화 상자 글을 바탕으로 실제 대화 상자를 구현하는 방법에 대해 소개하겠습니다.

 


1. 실습 주제) MFCModal 창 만들어 보기

 

 

 

  동작 전 결과

 

 동작 후 결과

 

 


1-1. BITMAP 리소스 추가

 

 

리소스 추가(A) 클릭

 

 

새로 만들기(N) 클릭 

->참고로 "가져오기" 하셔도 됩니다.

 

 

전 이렇게 그렸습니다.

 

 

이번에 그린 그림의 이름(ID)은 IDB_EARTH로 하겠습니다.

 

 


1-2. 컨트롤 박스 배치하기

 

 

 

 

 컨트롤 꾸며보기 - 이 부분은 여러분이 도구상자 탭을 이용하여 직접 하셔야 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

컨트롤 

 ID

 Caption

 Image

Type

Dialog

IDD_MFCMODAL_DIALOG

 

 

 

Edit Box

IDC_INPUT_NAME

 

 

 

Edit Box 

IDC_INPUT_SCHOOL

 

 

 

Edit Box

IDC_INPUT_DEPT

 

 

 

Edit Box

IDC_INPUT_GRAD

 

 

 

Static

IDC_STATIC

이름

 

 

Static

IDC_STATIC 

학교

 

 

Static

IDC_STATIC

학과

 

 

Static

IDC_STATIC

학년

 

 

Picture Control

IDC_INPUT_IMAGE

 

 IDC_EARTH

 Bitmap

Edit Box

IDC_OUTPUT_NAME

 

 

 

Edit Box

IDC_OUTPUT_SCHOOL

 

 

 

Edit Box

IDC_OUTPUT_DEPT

 

 

 

Edit Box

IDC_OUTPUT_GRAD 

 

 

 

Picture Control

IDC_OUTPUT_IMAGE

 

 

 Bitmap

Static

IDC_STATIC

이름

 

 

Static 

IDC_STATIC 

학교

 

 

Static

IDC_STATIC

학과 

 

 

Static 

IDC_STATIC

학년

 

 

Group Box

IDC_STATIC

최종입력결과

 

 

Button

IDB_BTN_COMPLETE 

입력완료 

 

 

 

리소스를 이처럼 편집해주시기 바랍니다.

 


1-3 변수 추가

 

하나를 대상으로 변수 추가 방법을 소개해드리겠습니다.

나머지는 여러분들이 아래의 테이블을 참고하여 만들어주시기 바랍니다.

 

 

 

변수 추가(B) 클릭

 

 

 

 범주(T)를 Value로 변경

 

 

변수 형식 : CString,

변수 이름 : m_staticName

최대 문자수 : 20

 

마침을 클릭합니다.

 

변수 추가 후에 코드가 변동됩니다.

변동되는 코드는

MFCModalDlg.h와 MFCModalDlg.cpp입니다.

 

 

 

 MFCModalDlg.h

 

 

 MFCModalDlg.cpp의 DoDataExchange()

-> 여기에서 사용하는 역할을 간접적으로 학습하셨으면 합니다.

 

참고로 DDX와 DDV는

앞서 살펴보셨겠지만, 대화상자에서의 최대 문자 수와 같은 제약조건을 다루는 함수입니다.

 

 

이 예제에서 만들어야 할 멤버 변수 설정 값 테이블입니다.

첫 번째 예제를 통해 변수 하나는 만들었으므로 나머지에 대한 테이블을 소개하겠습니다.

 

 컨트롤 ID

변수 형식

범주

최대 문자 수

 IDC_INPUT_SCHOOL

CString m_staticSchool

Value

50

 IDC_INPUT_DEPT

CString m_staticDept

Value

20

 IDC_INPUT_GRAD

CString m_staticGrad

Value

5

 IDC_OUTPUT_NAME

CString m_strName

Value

20

 IDC_OUTPUT_SCHOOL

CString m_strSchool

Value

50

 IDC_OUTPUT_DEPT

CString m_strDept

Value

20

 IDC_OUTPUT_GRAD

CString m_strGrad

Value

5

 IDC_OUTPUT_IMAGE

CString m_strImage

Control

 

 


1-4. 이벤트 처리기 추가

 

입력완료 버튼에서 오른쪽 버튼을 클릭한 후 이벤트 처리기 추가(A)를 클릭합니다. 

 

 

 

기본값으로 두가 추가 및 편집을 클릭합니다.

 

 

OnBnClickedBtnComplete( )라는 함수가 생성됩니다.

 

MFCModalDlg.h와 MFCModalDlg.cpp의 파일이 영향을 받게 됩니다.

어떻게 코드가 생성되었는지 확인해보겠습니다. 

 

 

 

결과)

 afx_msg void OnBnClickedBtnComplete( )라는 함수가 추가되었습니다. 

 

 

 결과)

  MFCModalDlg.cpp의 void CMFCModalDlg::OnBnClickedBtnComplete( )라는 함수 구현부가 완성되었습니다.

 


1-5 기능 구현

 


{
         CBitmap MyImageView;

       

         UpdateData(TRUE);  // UpdateData(TRUE)함수를 통해 데이터가 전송됩니다.

         m_strName = m_staticName;
         m_strSchool = m_staticSchool;
         m_strDept = m_staticDept;
         m_strGrad = m_staticGrad;

 

         MyImageView.LoadBitmap(IDB_EARTH);

         m_staticImage.SetBitmap(MyImageView);

 

         UpdateData(FALSE);

 
}
 

 OnBnClickedBtnComplete( ) 구현

 


1-6. 동작해보기

 

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 - 대화 상자(Dialog)

 


1. Introduce

 

Dialog -> 영어시간에 많이 들어보셨을 겁니다.

 

 

Dialog Box는 응용 프로그램과 사용자의 의사소통을 하는 통로라고 설명할 수 있습니다.

 

 

 Figure 1) Visual Basic 6.0 (Visual Basic for Application으로 시연함)

 

대부분 Visual Studio의 C++ 모달 환경을 처음 접하게 되면, 프로그래밍을 접고 싶다는 생각을 종종할 수 있습니다.

왜냐하면, 초보자분들 입장에선 위에 그림과 같은 환경에서 개발하면 편하고 해볼만하다는 생각을 할 수 있습니다.

하지만, MFC는 조금 복잡합니다. 만져야 할 게 조금 있습니다. (코드 부분, 화면 부분, 컨트롤러 부분)

 

 

 

 Figure 2) 코드 환경 ( C++ MFC )

 

 

 

 

 Figure 3) 모달 영역

 

모달 영역은 모달 영역대로 분리되어 있습니다.

 


2. 큰 나무를 그려보면,

 

 

 

실제로는 별거 없습니다.

화면 작업이라는 영역은,

 

 

 

 리소스 뷰의 영역 -> Dialog

 

여러분이 만든 버튼의 이벤트 코드는?

 

 

 

 

 버튼 예시 - 실제 화면 캡처함

 이벤트 처리기 추가(A) 마법사

 

마법사를 이용하면, 자동 생성됩니다.

 

 

이벤트 마법사의 예 - 이미 추가된 이벤트 버튼이므로 '추가 및 편집'이 비활성화되어 있음.

 

 


3. 대화상자의 예를 소개합니다.

 

 

 

 

 

 Dialog의 예1) 인터넷 익스플로러 - 파일-> 열기

 Dialog의 예2) 실행 - Dialog

 

 

 

 

 Dialog의 예3) 파일 열기

 Dialog의 예4) 찾기 및 바꾸기

 

이렇게 많은 다이얼로그가 존재하는지 알았으면, 대화상자를 구현할 준비가 된 것입니다.

한번 일상 속에서 다이얼로그가 어떤게 존재하는지 탐구해보셨으면 합니다.

반응형

+ Recent posts