본문 바로가기
New/MFC 윈도우 프로그래밍

4. 대화상자 (1)

by onenewkong 2024. 12. 15.

대화상자 (Dialog Box): 사용자와 윈도우 간의 인터페이스 기능 수행

4.1 CDialogEx 클래스

  • CDialogEx 클래스는 CWnd로부터 상속받은 클래스이므로 모든 윈도우 메시지 처리 가능
  • CDialogEx 클래스는 CDialog 클래스로부터 파생된 클래스로 CDialog 클래스의 모든 기능을 수행하고 그 이외에 대화상자의 배경색과 배경 그림을 쉽게 바꿀 수 있는 기능이 추가된 클래스임
  • 우리는 CDialogEx 클래스를 상속받아서 사용자 정의 대화상자 프로그램을 만들 수 있음

[ CDialogEx 클래스 계층도 ]

CObjectㄴ CCMdTarget    ㄴ CWnd        ㄴ CDialog            ㄴ CDialogEx

4.2 대화상자 기반의 프로그램

  • View 형식의 프로그램에서는 템플릿으로 구현하지만, 대화상자 기반의 프로그램은 애플리케이션 클래스와 대화상자 클래스로 이루어져 있음
  • 대화상자 클래스는 대화상자 내에서 일어나는 모든 이벤트 처리를 해줌
클래스 기저 클래스 설명
애플리케이션 클래스 CWinApp 프로젝트 전체를 관리하는 클래스
대화상자 클래스 CDialogEx 대화상자의 기능을 구현하는 실제적인 클래스
도움말 대화상자 클래스 CDialogEx 도움말 정보 클래스
  • 대화상자 프로그램 실행 - 생성자 함수 호출 - OnCreate() 함수 호출 - OnInitDialog() 함수 호출 - OnPaint() 함수 호출 - OnClose()/OnDestroy() 함수 호출 - 종료
  • OnCreate() 함수는 CWnd 객체가 제대로 생성된다면 0을 반환하고, 만약 프로그램이 종료되면 OnDestroy() 함수가 호출되어 -1을 반환함
  • OnInitDialog(): 대화상자가 화면에 보이기 바로 전에 실행되므로 여기에서 초기화 기능을 부여함
  • OnPaint(): OnDraw() 함수와 같은 기능을 함
  • DoDataExchange(): 컨트롤을 어떤 방식으로 이용할 것인지를 결정함

4.3 MFC 기본 컨트롤

  • 컨트롤(Control): 사용자와 인터페이스를 이루는 도구
  • 프로그램이 실행 중에 끊임없이 사용자와 통신하는데 컨트롤을 통해 명령과 정보를 받아들임
  • 컨트롤을 통해 결과를 사용자에게 보고함

(1) Static Text

화면에 문자열을 배치할 때 사용하며 사용자로부터 명령을 받아들이지도 않고 출력을 내보내지도 않는다.

(2) Edit Control

문자열을 입력하고 편집할 수 있도록 해주는 컨트롤로 주로 사용자에게 문자열을 입력받을 때 사용된다.(3) Group Box서로 연관된 컨트롤들을 시각적으로 그룹을 지어 다른 컨트롤과 구분하는 용도로 사용한다.(4) Button Control마우스로 클릭하여 어떤 동작을 수행하는 용도로 사용한다.(5) Check BoxButton Control의 일종이며 마우스로 클릭하면 체크 표시가 on/off 된다.(6) Radio ButtonButton Control의 일종이며 마우스로 클릭하면 라디오 표시가 on/off 된다. (7) List Box사용자가 선택할 수 있는 항목들을 여러 개 나열해 두고 선택할 수 있도록 해주는 컨트롤이다. 선택해야 할 대상을 키보드로 직접 입력해 주어야 하는 전통적인 방법보다 선택 대상을 보여주고 마우스로 간단히 선택할 수 있도록 하는 더욱 편리한 방법을 제공해 준다.(8) Combo BoxList Box의 단점을 해결한 것이 Combo Box이며 Edit Control과 List Box를 합쳐 놓은 모양이다. 기존의 항목을 선택할 때는 아래쪽의 List Box에서 선택하고 직접 입력해야 할 항목은 Edit Control에서 입력할 수 있으며 Combo Box는 필요할 때만 열어서 사용하고 평소에는 닫아 두기 때문에 화면 면적도 넓게 차지하지 않는다.

 

실습

'New > MFC 윈도우 프로그래밍' 카테고리의 다른 글

5. 도큐먼트 파일 입출력 및 템플릿 (1)  (0) 2024.12.19
4. 대화상자 (2)  (1) 2024.12.15
3. 메시지 처리 (3)  (0) 2024.12.14
3. 메시지 처리 (2)  (0) 2024.12.11
3. 메시지 처리 (1)  (0) 2024.12.08