4. 대화상자와 Resource 2006.10.10 최 영 석.

Slides:



Advertisements
Similar presentations
1/ 편집 기능 사용하기 – 실습 1 글자 모양을 바꾸고 싶은 곳을 블록 설정 [ 글자 모양 ] 대화 상자에서 [ 글꼴 ] ‘ 궁서체 ’, [ 글자 색 ] ‘ 토마토색 ’ 으로 선택 → [ 설정 ] 클릭 → 글자 모양 변경.
Advertisements

1/29 키보드로 직접 입력할 수 없는 다양한 기호와 한자를 입력하는 방법을 알아 보자. 또한 블록으로 영역을 설정하는 여러 가지 방법에 대해 살펴본 후 블록 으로 설정된 내용을 복사하여 붙여넣거나, 잘라내고 이동하는 방법에 대해서 도 알아보자. 02_ 문서의 입력과 편집.
1/37 한글에는 전문적인 문서 편집을 위한 고급 기능이 있다. 문서를 편리하게 수 정할 수 있도록 도와주는 찾기 / 찾아 바꾸기, 다른 위치로 이동할 수 있는 책 갈피와 하이퍼링크에 대해 알아보자. 그리고 자주 사용하는 서식을 미리 정 해 놓고 쓰는 스타일 활용법과 스타일이.
데이터 완전삭제프로그램 Perfect Delete 사용설명서  주의 이 프로그램을 이용하여 삭제된 데이터는 어떠한 방법으 로도 복구가 불가능합니다. 그러므로 실제 데이터 삭제시 신중을 기하기 바랍니다.
Windows Function Windows XP Windows 7 Windows 8 FREE 조장 : 김동환 조원 : 전태우
윈도우 프로그래밍 실습 김 창 헌.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
新 연구관리 프로그램 SAP 설치 안내 1. SAP GUI 7.3 설치 2전자증빙 솔루션 설치 배포 :
제4장 대화상자.
Image & Video processing
1. 신뢰할 수 있는 싸이트 등록 인터넷 익스플로러 실행 후 실행
코크파트너 설치 가이드 Window 7.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
Outlook Express 메일 백업 및 복원가이드
forms 객체 입력상자 체크상자, 라디오 버튼 목록상자
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
홍익대학교 메일 시스템 구축 Outlook 설정 매뉴얼.
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
Communication and Information Systems Lab. 황재철
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Outlook Addin 설치 방법 및 매뉴얼
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
WinCE Device Driver 실습 #3
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
CHAP 12. 리소스와 보안.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바응용.
이메일 자동 포워딩 방법 (Outlook/OWA)
홀인원2.0 설치 메뉴얼.
2018년 11월 05일 박성진 Web & Internet [08] 레이아웃 P1 2018년 11월 05일 박성진
영상처리 실습 인공지능연구실.
WZC 무선 연결 방법 (Windows XP Ver.).
홍익대학교 메일 시스템 구축 그룹웨어 메일 이전 하기.
PRM 정보관리 업체 메뉴얼
LIT-GenAppSetup ※ Texting+ 클라이언트 프로그램은 제품 인증을 받은 제품입니다.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
1. 설치 2. SPC_Wave 사용설명 SPC_Reflow 사용방법은 Wave와 같습니다.
2 보안 1 도구 윈도우 XP > 온밀크 프로그램 설치 장애 (보안 설정) / 품목추가 깨질 때 장애증상
8장. spss statistics 20의 데이터 변환
빌드 성공.
CHAP 21. 전화, SMS, 주소록.
화상대화 매뉴얼 한국지역정보개발원.
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
청각장애인용 APP 구성 및 사용법.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
시보기 / PC 연결설정방법 광주 직영 임성환 사원.
DK-128 개발환경 설정 아이티즌 기술연구소
에어 PHP 입문.
수동 설치시는 설치 방법 1. 두번에 설치 CD 속에 fscommand 폴더 밑에 Osstem 이라는 폴더를
영상처리 실습 (OpenCV + MFC) Chonbuk National University A.I. Lab.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
메뉴(Menu) 컴퓨터응용 및 실습 I.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
농구 로봇 따라해 보기.
1. 인터넷 보안 옵션 레지스트리 등록 Config Setup 클릭.
9 브라우저 객체 모델.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
이 프레젠테이션은 PowerPoint의 새로운 기능에 대해 안내하며, 슬라이드 쇼에서 가장 잘 보입니다
Power Point 예제 디자인 적용 (서식) - (디자인적용) - (원하는 디자인 선택)
7 생성자 함수.
6 객체.
Chapter 11. 문서 인쇄 및 파일 형식.
BoardGame 보드게임 따라가기.
Presentation transcript:

4. 대화상자와 Resource 2006.10.10 최 영 석

Contents 대화상자 만들기 모달 대화상자와 모달리스 대화상자. FormView 버튼 리스트 상자 콤보 상자 공용 대화 상자

1. 대화 상자 만들기 대화 상자란? 사용자와 프로그램간의 정보교류수단의 독립된window.

1.1 대화상자 폼과 클래스 만들기 Insert의 Resource 항목 클릭! (Ctrl+1)

1.1 대화상자 폼과 클래스 만들기 Controls 도구바 사용

1.1 대화상자 폼과 클래스 만들기

1.1 대화상자 폼과 클래스 만들기 View의 ClassWizard 선택 (Ctrl+ W)

1.1 대화상자 폼과 클래스 만들기 Cdialog 클래스에 상속받은 새로운 클래스명 새로 만든 클래스 소스가 들어있는 파일명 베이스 클래스 대화상자 아이디 명

1.2 대화 상자 안의 컨트롤과의 연결 대화 상자 안의 컨트롤을 클래스와 연결 Ctrl키 누른 상태에서 더블클릭! 에디터 상자와 연결될 멤버명 에디터 상자와 연결되는 방법 에디터 상자와 연결되는 멤버형

1.2 대화 상자 안의 컨트롤과의 연결 Category Value : 컨트롤에 설정되어 있는 값만 연결. Control : 해당 컨트롤을 제어할 수 있는 컨트롤 클래스와 연결.

1.2 대화 상자 안의 컨트롤과의 연결 Variable type 에디터 상자와 연결되는 변수형을 의미

1.2 대화 상자 안의 컨트롤과의 연결 대화상자 클래스의 소스부분 DODataExchange 함수 Category : Control Category : Value

1.2 대화 상자 안의 컨트롤과의 연결 대화 상자 안의 데이터 입력 Control 형태 Value 형태 ComboBox의 데이터 입력하는 함수‘AddString’ m_combobox.AddString(“데이터1”); Value 형태 UpdateData(TRUE) 에디터 상자에 입력된 데이터를 가져오고자 한다면.. UpdateData(FALSE) 특정값을 입력하고 이 값을 그대로 에디터 상자에 전송하고자 한다면…

1.3 대화상자만 있는 프로그램 대화상자만 출력 대화상자 한 개만 설정, 대화상자 종료후 프로그램 종료. MFC구조에서 볼때 View와 프레임이 없이 단순하게 대화상자만 출력되는 형태.

1.3 대화상자만 있는 프로그램 AppWizard의 step1 항목에서 Dialog based 선택.

1.3 대화상자만 있는 프로그램 AppWizard의 step2 대화 상자의 시스템 메뉴에 본 프로그램에 대한 안내문이 있는 대화 상자를 출력할 것인가? 도움말 항목을 설정할 것인가? 대화 상자의 자원 형태를 3D 스타일로 설정할 것인가?

1.3 대화상자만 있는 프로그램

1.3 대화상자만 있는 프로그램 클래스명 Base 클래스 내용 CMyDialogApp CWinApp  애플리케이션 클래스 CMyDialogDlg  CDialog 대화 상자 클래스 CAboutDlg 정보 설정 대화 상자 클래스 대화 상자 형태의 프로그램을 AppWizard로 만들면 애플리케이션 클래스와 CDialog 클래스만 생성. 이 대화 상자 형태의 프로그램이 실제 어떻게 구동되는가를 알고자 한다면 App 클래스의 InitInstance() 함수를 참조.

1.3 대화상자만 있는 프로그램

1.3 대화상자만 있는 프로그램 애플리케이션에 대화 상자를 만들고 이 대화 상자를 m_pMainWnd로 설정한 다음 DoModal() 함수를 이용하여 실행, 결국 대화 상자 한 개만 만드는 프로그램이나 내부에서 대화 상자를 출력할 때 대화 상자를 출력하는 방법은 같다. DoModal()이라는 함수를 실행하면 대화 상자가 종료되면서 종료값을 리턴. OK 버튼을 클릭하였을 경우 린턴값은 IDOK이며 Cancel 버튼을 클릭하였을 경우에는 IDCANCEL이 리턴

1.4 함수 OnInitDialog() 초기화하는 부분을 주로 기입하는 함수 클래스 위저드를 이용하여 메시지 항목에서 WM_INITDIALOG를 선택하여 만든다.  대화 상자가 출력될 경우 해당 항목에 어떤 값을 미리 입력하여 놓는다든지 해당 항목들을 활성/비활성한다든지 하는 것들은 모두 이 함수에서 하는 것이 좋다. 대화 상자만 출력되는 프로그램을 AppWizard를 이용하여 만들었을 경우 기본적인 초기화를 OnInitDialog에 해놓는다.

1.4 함수 OnInitDialog() OnInitialDialog()

1.5 컨트롤들의 이벤트 메시지 얻기 컨트롤들에서 어떤 이벤트가 발생되었을 때 구동되는 함수를 만드는 방법을 의미. 예를 들어 버튼이 눌려졌을 때, 리스트 상자에서 특정 항목을 선택하였을 때.

1.5 컨트롤들의 이벤트 메시지 얻기 ② 해당 컨트롤에서 발생되는 이벤트 메시지 리스트. ① 이벤트를 얻고자 하는 컨트롤 ID를 선택. ③ 리스트 상자에서 특정항목을 선택하였을때 수행되는 함수. 선택 항목이 변경되었을 경우(LBN_SELCHANGE), 더블 클릭했을 경우(LBN_DBLCLK), 포커스가 사라질 경우(LBN_KILLFOCUS) 등등의 메시지가 발생 ④OnSelchangeList1 함수가 만들어짐.

1.6 대화 상자 프로그램 예제 대화 상자용 프로그램을 만들고 버튼, 에디터 상자, 콤보 상자, 리스트 상자 등을 설정하고 해당 이벤트 메시지를 받아서 처리하는 예제. AppWizard의 Step1에서 Dialog based 항목을 선택

1.6 대화 상자 프로그램 예제 대화상자 폼과 클래스 연결 각 컨트롤에서 발생되는 메시지가 출력 체크버튼에 체크되면 에디트 상자에 문장 출력. 버튼을 클릭하면 에디트 상자에 문장 출력. 리스트상자에 새로운 항목이 선택되면 문장출력. 콤보상자에 새로운 항목이 선택되면 문장출력.

1.6 대화 상자 프로그램 예제 OnInitDialog() 함수 수정

1.6 대화 상자 프로그램 예제 실행화면

2. 모달 대화상자와 모달리스 대화상자. 모달 대화 상자 DoModal() 함수를 이용하여 대화 상자를 출력하는 방법. 2. 모달 대화상자와 모달리스 대화상자. 모달 대화 상자 DoModal() 함수를 이용하여 대화 상자를 출력하는 방법. 대화 상자가 실행되면 부모 윈도가 포커스를 갖지 못한다. 대화 상자를 실행한 후에 부모 윈도의 메뉴 항목을 클릭하거나 View 윈도 판을 마우스로 클릭하였을 때 “삑”하는 소리만 날 뿐 활성화가 되지 않는다. 즉 모든 포커스를 대화 상자가 갖는 형태.

2. 모달 대화상자와 모달리스 대화상자. 모달리스 대화 상자 모달 대화 상자와 반대로 부모 윈도에서 포커스를 가짐. 2. 모달 대화상자와 모달리스 대화상자. 모달리스 대화 상자 모달 대화 상자와 반대로 부모 윈도에서 포커스를 가짐. 즉 부모 윈도를 클릭하면 부모 윈도가 활성화되는 경우를 의미. 주로 현재 대화 상자가 가동되면서 동시에 부모 윈도의 여러 항목들이 동시에 가동될 때 사용. 예를 들어 한글 프로그램에서 찾기 항목을 실행시켰을 때 찾기 대화 상자가 가동되면서 에디터 윈도에서 글자를 수정할 때 사용하는 방법이 모달리스 대화 상자입니다.

2.1 모달리스 대화상자 출력방법 먼저 Create 함수를 이용하여 대화 상자를 만든 후 실행하고자 할 경우 ShowWindow라는 CWnd의 멤버 함수를 이용하여 화면에 출력. 모달리스 대화 상자는 일반적으로 대화 상자 클래스를 헤더에 설정하고 부모 윈도가 만들어지는 부분에서 미리 Creat 함수를 이용하여 윈도를 만들어 두었다가 대화 상자를 실행하고자 하는 부분에서 ShowWindow 함수를 이용. ① 윈도를 만든다. CmyDialog pDlg; pDlg.Create(IDD_Dialog1,this) ② 대화상자를 실행한다. pDlg.ShowWindow(SW_SHOW)

3. FormView FormView란? 대화 상자처럼 컨트롤을 포함한 윈도이면서 CView를 상속받은 형태를 의미.

3.1 FormView를 사용한 프로젝트 만들기 View 항목을 선택한 후에 Base Class 항목을 CFormView로 설정.

3.1 FormView를 사용한 프로젝트 만들기 View 윈도와 연결되어 있는 대화상자 대화상자를 선택한 상태에서 Alt+Enter 키를 누르면 속성대화상자가 나타낸다. Border가 없음. 대화상자일 경우에는 보통 Dialog Frame으로 설정. Child 형태임. 대화상자일 경우에는 Popup 형태임.

3.2 FormView를 이용한 예제 다음 예제는 AppWizard를 이용하여 SDI 형태로 만든 다음 Step6에서 CExFormViewView클래스는 CFormView 클래스를 상속받도록 한다. FORM의 형태

3.2 FormView를 이용한 예제 실제적으로 보면 전에 제작한 폼 형태와 같지만 차이점은 리스트 상자를 GetDlgItem을 이용하여 윈도 핸들을 얻었으나 본 예제에서는 DoDataExchange 함수를 이용하여 연결. 예제 클래스에서 각 항목을 핸들링하여 에디터 상자에 출력하는 내용은 비슷. OnInitDialog에서 작성한 부분이 OnInitialUpdate로 바뀐 것과 리스트 상자를 m_listBox라는 멤버 함수를 이용하여  컨트롤하는 것을 제외하면 모든 내용이 전과 같게 프로그램을 작성.

3.2 FormView를 이용한 예제 대화상자 폼에 컨트롤 설정과 멤버 연결 DoDataExchange를 이용하여 클래스 멤버와 연결 헤더부

3.2 FormView를 이용한 예제 대화상자 폼에 컨트롤 설정과 멤버 연결 DoDataExchange 함수

3.2 FormView를 이용한 예제 대화 상자 클래스 만들기 메뉴 항목에서 ‘모달 대화 상자’와 ‘모달리스 대화 상자’ 항목을 선택하였을 때 출력할 대화 상자 폼

3.2 FormView를 이용한 예제 View 클래스 헤더 상단부에 CMyDlg가 설정되어 있는 헤더를 #include한다.

OnInitialUpdate() 수정하기 3.2 FormView를 이용한 예제 OnInitialUpdate() 수정하기

3.2 FormView를 이용한 예제 모달 대화상자 선택시 함수 만들기 OnModaldlg()

3.2 FormView를 이용한 예제 모달리스 대화상자 선택시 함수 만들기 OnModalle()

3.2 FormView를 이용한 예제

4.버튼 일반적인 버튼 일반적인 버튼은 ExFormView나 ExDialog에서 사용한 버튼을 의미. 이 버튼은 대화 상자 폼을 선택하면 나타나는 컨트롤 도구바에서  버튼을 클릭. 이 때 설정되는 버튼은 기본적으로 CButton 클래스. 실제로 버튼을 사용할 때는 Create 함수를 이용하는 것보다 본 장에서 설명하는 방식으로 FormView나 Dialog에 설정하여 많이 사용. 일반적 형태의 버튼 외에 체크 버튼과 라디오 버튼, 그룹 상자 등등이 모두 버튼이다. 다만 스타일을 달리하여 형태가 바뀐 것 뿐.

4.1 일반적인 버튼 체크 버튼 체크 버튼은 클릭하면 좌측 사각 형태에 v자 형태로 표시되며 다시 누르면 해제되는 버튼. 이 버튼을 이용하면 어떤 옵션을 설정하거나 해제할 때 유용. 체크 버튼은 DoDataExchange 함수를 멤버와 연결하고자 할 때 Value 옵션을 이용하면 DDX_Check 함수로 연결되며 BOOL 형태와 연결. BOOL 형태는 1과 0을 가지는 정수형 변수. 즉 2진 값을 가지고 있기 때문에 체크 버튼이 체크되면 1로, 체크 버튼에서 해제되면 0으로 설정. Control로 연결될 때는 CButton으로 연결. DDX_Check로 연결하면 UpdateData 함수를 이용하여 현재 설정되어 있는 체크 버튼의 값을 얻을 수 있다.

4.1 일반적인 버튼 라디오 버튼 라디오 버튼은 여러 선택 사항에서 한 개를 선택하고자 할 때 주로 많이 사용하는 버튼. 여러 개의 선택 버튼이 있을 경우 한 개를 선택하면 나머지 항목들은 해제. 라디오 버튼은 DoDataExchange 함수를 이용하여 클래스 멤버와 연결하고자 할 때 지금까지 사용한 방법(대화 상자 해당 내용을 Ctrl 키를 누르고 있는 상태에서 마우스 좌측 버튼을 클릭하는 방법)으로는 연결되지 않는다. 이 라디오 버튼을 연결하고자 할 경우에는 직접 코딩을 해주어야 한다. 예를 들어서 IDC_RADIO1이라는 버튼이 있다고 가정했을 때 이 버튼을 BOOL형인 m_bRadio1과 연결하고자 한다면 먼저 헤더에 다음과 같이 m_bRadio1을 선언합니다.

4.1 일반적인 버튼 라디오 버튼 Group을 설정하면 각각 독립된 형태로 구동이 되나 문제가 생김. 문제는 한 번 라디오 버튼을 클릭하여 체크 상태로 놓게 되면 다시 해제가 안 된다는 것. 즉 라디오 버튼을 클릭하면 ON-OFF의 토글 형태가 되지 않는다. 이를 해결하기 위해서는 바로 DDX_Check를 사용하여 멤버와 연결. DDX_Check를 이용하여 m_bRadio1과 IDC_RADIO1을 연결시켰다고 가정한다면, 버튼을 클릭했을 때 함수에서 다음과 같이 설정하여 주면 라디오 버튼이 ON-OFF가 자동적으로 구동.

4.1 일반적인 버튼 그룹 상자와 Static 윈도 그룹 상자와 Static 윈도는 아무런 이벤트를 발생하지 않고 다만 대화 상자를 보기 좋게 장식하는 데 사용. 그룹 상자는 버튼 형태이며, Static 윈도는 그냥 Static 윈도라고 한다. 그룹 상자는 라디오 버튼을 그룹화할 때 주로 사용하며 static 윈도는 윈도 영역을 알고자 할 때나 상자를 칠할 때 주로 많이 사용.

4.2 비트맵 버튼 비트맵 버튼 만드는 방법 ① 자동으로 설정하는 방법. 버튼의 이름을 버튼이라고 하면 비트맵에서 들어간 그림은 BUTTOND로, 나온 그림은 BUTTONU로 찾아서 로드한다. 버튼 속성에서 Owner draw 항목 체크.

4.2 비트맵 버튼 비트맵 버튼 만드는 세가지 방법 ② 비트맵 버튼 클래스와 대화 상자 버튼을 DDX_Control로 연결시켜 주고 LoadBitmaps 함수를 이용하여 비트맵 버튼을 만드는 방법. LoadBitmaps를 사용하여 비트맵 버튼을 설정하면 네 가지 형태의 비트맵을 로드할 수 있습니다. 즉 나온 형태, 들어간 형태, 현재 포커스가 설정되어 있는 형태, 비활성화 되는 형태를 의미 버튼 속성에서 Owner draw 항목 체크.

4.3 트루컬러 비트맵 자원에서 비트맵을 설정할 때 최대 256컬러까지는 지원이 되나 트루 컬러는 지원이 되지 않는다. 지원되지 않는다는 의미는 그리소스 에디터에서 그릴 수 없다는 뜻. 트루컬러 비트맵 버튼을 설정하려면 사용자가 직접 비트맵을 그려주는 방법과 외부에서 그린 다음 비트맵에 등록하는 방법 있다. 트루컬러 비트맵은 만든다기보다 비트맵 버튼 만들기 세 번째 항목, 즉 프로그래머가 버튼 DC를 받아서 직접 그리는 것이다.

4.3 트루컬러 비트맵 대화상자 클래스에 WM_DRAWITEM 메시지를 받는 함수를 설정 버튼 속성에서 Owner draw 항목 체크.

4.3 트루컬러 비트맵 Dib를 출력하기 위해서는 BITMAPINFO 구조체를 이용하여 정보를 설정

4.3 트루컬러 비트맵 szBitmapInfo에 해당 raw 파일의 정보를 설정.

4.3 트루컬러 비트맵 수정된 OnDrawItem()

4.4 버튼위에 있을때 마우스 커서 바꾸기 ①클래스 위저드를 이용 Add Class 버튼을 클릭하여 new 항목을 선택.

4.4 버튼위에 있을때 마우스 커서 바꾸기 ②새로 만든 클래스명을 설정.(일반적으로 앞에 C를 설정하는것이 좋음) 4.4 버튼위에 있을때 마우스 커서 바꾸기 ②새로 만든 클래스명을 설정.(일반적으로 앞에 C를 설정하는것이 좋음) ③ 해당 클래스가 있는 소스 파일명. ④ base Clas를 설정. CButton을 상속받아 CMyButton을 만들 것이므로 Cbuttondmf 설정.

4.4 버튼위에 있을때 마우스 커서 바꾸기 ⑤ 만들어진 클래스(CMyButton)에서 WM_MOUSEMOVE 함수를 만든다.

4.5 버튼 예제 Dialog based 프로젝트 만들기 AppWizard를 이용하여 프로젝트를 Dialog based 형태로 만든다. 프로젝트를 ExButton으로 설정하면 IDD_EXBUTTON _DIALOG라는 대화 상자 폼이 나타난다. 이 폼에 대화 상자를 설정. 선택사항 항목은 Group 속성을 설정. 비트맵,트루맵 버튼은 Owner draw를 설정.

4.5 버튼 예제 대화 상자 컨트롤과 클래스 멤버와의 연결 DoDataExchange 안에 DDX_Text나 DDX_Control, DDX_Check를 이용하여 대화 상자의 컨트롤과 클래스 멤버를 연결 ExButtonDlg 헤더부

4.5 버튼 예제 대화 상자 컨트롤과 클래스 멤버와의 연결 DoDataExchange()

4.5 버튼 예제 비트맵 버튼 설정 OnInitDialog()

4.5 버튼 예제 트루컬러 이미지 만들고 로드하기 들어 형태의 이미지를 설정하기 위해서는 m_pDibd에, 나온 형태 이미지는 m_pDibu에 설정 두 개의 멤버에 Dib를 연결. ExButtonDlg 헤더부

4.5 버튼 예제 초기화 부분에서 두 개의 멤버에 Dib를 로드하는 부분을 설정

4.5 버튼 예제 Owner Draw에서 트루 컬러 버튼 설정

4.5 버튼 예제 일반 버튼을 클릭하면 비트맵 버튼이 활성/비활성이 토글화 일반 버튼이 클릭되었을 때의 함수를 클래스 위저드로 생성, 대화 상자에서 일반 버튼 ID를 선택한 다음 BN_CLICKED 함수를 만들면 된다. 만든 함수에 다음과 같이 수정 IsWindowEnabled 함수는 활성화일 경우에는 1, 그렇지 않을 경우에는 0을 리턴

4.5 버튼 예제 라디오 버튼 토글 설정 라디오 버튼을 토글하기 위해서 m_bRadio1의 값을 토글시키고 이것을 라디오 버튼에 설정 라디오 버튼이 클릭되었을 때의 함수를 만든 다음 이 함수를 다음과 같이 수정

4.5 버튼 예제 실행 화면

5. 리스트 상자 수정 모드가 있는 리스트 상자. Insert키와 Delete 키에 대응하는 리스트상자. 사용자 그리기 리스트 상자.

6. 콤보 상자 7. 공용 대화 상자 문자입력 콤보 상자. 컨트롤 색상 바꾸기 파일 대화상자 폰트 대화상자 컬러 대화상자 프린트 대화상자 7. 공용 대화 상자

Q & A Thankyou !