윈도우 프로그래밍 실습 김 창 헌
Visulal C++ 시작하기 시작 메뉴에 있는 아이콘을 클릭한다.
Visual C++ 개발 Tool 아이콘을 클릭하면 아래와 같은 프로그램 개발 도구가 화면에 나타난다.
Visual C++개발도구 구성 Project Workspace window 메뉴 바 File Edit Window Output Window
윈도우 어플리케이션 개발 과정 1. AppWizard 를 이용하여 윈도우 틀(framework) 형성 2. Visual design 단계 3. 코드 작성 단계 4. 컴파일 및 링크 (실행 파일 생성)
1. AppWizard 를 이용하여 윈도우 틀(framework) 형성
2. Visual design step 프로그램의 모양을 만듬. 리소스 편집기를 이용하여 사용자 인터페이스를 구성하는 오브젝트 생성 눈에 보이는 부분 설계 프로그램의 모양을 만듬. 비주얼 C++에 내장된 기능을 사용해서 여러가지 개체를 만듦.(푸쉬버튼,스크롤 바,라디오 버튼 등)
3. 코드 작성 단계 ( code-writing step) ClassWizard 를 이용하여 사용자 인터페이스 오브젝트에 대한 메시지 처리 코드 생성 혹은 에디터에 직접 코드 작성 눈에 보이지 않는 부분의 설계 - 코드와 리소스의 연결
4. Application source code 컴파일 및 링크 (실행파일 생성)
윈도우즈 프로그램 예제 1. 기본 윈도우 틀 만들기 2. 대화상자 (Dialog box)만들기 3. 그래픽 프로그램 도형 모양과 색깔 선택하여 도형 그리기.
윈도우즈 프로그래밍 예제 (I) 기본 윈도우 틀 만들기 File의 New 메뉴를 선택한다.
AppWizard 를 이용하여 기본 윈도우 틀 만들기 아무 기능도 수행하지 않는 골격 프로그램 Step1: “my”라는 이름의 프로젝트 생성 & 골격 코드 작성 1) File 메뉴의 New항목 2) MFC AppWizard선택 3) 프로젝트명 입력 4) OK버튼 클릭
1. 어플리케이션 특성 선택 Single document : 하나의 다큐먼트를 갖는 어플리케이션 Multiple documentation : 각각의 윈도우를 갖는 여러 개의 다큐먼트를 작업할 수 있는 어플리케이션 Dialog based : 다이얼로그 박스가 나타나는 어플리케이션
2. 데이터베이스 지원옵션 None Header files only : 데이터베이스 지원하는 AfxDb.h 헤더 파일을 포함하는 어플리케이션 생성. Database view without file support : 데이터베이스를 지원하는 어플리케이션은 생성하나 파일을 지원하지는 않음. Database view with file support : 데이터베이스와 파일 지원하는 어플리케이션
3. OLE 지원 옵션 None Container : OLE컨테이너 어플리케이션 생성. Mini-server : 단독적으로 실행될 수 없으며 단지 포함 객체만 생성하는 어플리케이션 Full-server : 단독적으로 실행될 수 있으며, 포함 연결 객체도 생성하는 어플리케이션 Both container and server : OLE컨테이너와 서버를 지원하는 어플리케이션 생성
4. 사용자 인터페이스 옵션 Docking toolbar : 이동가능한 툴바를 만듬. Initial status bar : 윈도우 하단에 상태바를 만듬 Printing and print preview : 인쇄와 관련된 메뉴 설정 Context-sensitive Help : 구문인식 도움말 제공하는데 사용되는 도움말 파일 생성. 3D controls : 입체적인 형태로 리소스를 이용 MAPI : 편지보내기와 관련된 메뉴 & 명령코드 Windows Socket : TCP/IP네트워크상에서 통신할 수 있는 어플리케이션 생성
5. 생성파일 내용옵션 결정 Yes, please : 소스파일에 주석문 추가 5. 생성파일 내용옵션 결정 Yes, please : 소스파일에 주석문 추가 No, thank you : 주석문 추가하지 않음. As a shared DLL : 공유 DLL사용 As a statically linked library :정적 링크 라이브러리
6. 생성된 클래스 명 및 파일명 지정 생성된 클래스들의 이름과 구현 파일명을 보여 줌. New Project Information 다이얼로그 박스가 출력.
7. AppWizard를 이용한 기본 윈도우 틀 생성 결과
윈도우 프로그래밍 예제 다이얼로그 박스 (대화상자) 속성 시트에서 도형의 모양과 칼라 선택하여 마우스 클릭한 지점에 도형 그리는 프로그램
Dialog Box 개요 대화상자 분류 사용자의 입력을 받아들이는 상자 모달 다이얼로그 박스 모델리스 다이얼로그 박스 메시지 박스 윈도우 공통 다이얼로그 박스.
대화 상자(Dialog Box)의 분류 모달 다이얼로그 박스(Modal Dialog Box) 다이얼로그 박스를 닫기 전까지는 해당 다이얼로그 박스 안에서의 작업 이외는 다른 작업을 할 수가 없다. 응용 모달 다이얼로그 박스 다이얼로그 박스를 생성한 응용프로그램이 아닌 다른 응용 프로그램의 윈도우로 전환할 수 있는 상자. 시스템 모달 다이얼로그 박스 다이얼로그 박스를 생성하지 않은 다른 응용프로그램의 작업도 할 수 없이 확면 중앙에 박스가 사라지지 않고 계속 응답요구. 운영체제에 치명적인 영향을 발생시켜, 문제가 해결되지 않으면 더 이상 진행할 수 없는 경우에 사용.
대화 상자(Dialog Box)의 분류 모델리스 다이얼로그 박스(Modeless Dialog Box) 메시지 박스 다이얼로그 박스를 닫지 않아도 다른 응용 프로그램을 실행할 수 있다. 예- search 메뉴의 Find 메뉴를 선택하여 ‘찾기’ 다이얼로그를 실행한 상태에서 다른 작업을 진행 할 수 있다. 메시지 박스 간단한 메시지를 표시하고 명령 버튼을 통하여 사용자로부터 입력 받을 때 사용되는 특별한 종류의 모달 다이얼로그 박스 윈도우 공통 다이얼로그 박스 응용 프로그램마다 공통적으로 많이 사용하는 다이얼로그 박스로 윈도우 운영체제가 제공. 예- Open, Save As, Print , etc…
Dialog Box 제작 과정 다이얼로그 에디터로 다이얼로그 박스를 디자인 ClassWizard로 다이얼로그 클래스 만듬 윈도우프로그램예제 Dialog Box 제작 과정 다이얼로그 에디터로 다이얼로그 박스를 디자인 ClassWizard로 다이얼로그 클래스 만듬 ClassWizard로 다이얼로그 리소스 컨트롤에대한 메시지 핸들러 설치 ClassWizard를 사용하여 다이얼로그 박스의 컨트롤과 관련된 데이터 멤버를 추가.
윈도우프로그램예제 Dialog Box 제작 AppWizard 사용하여 “hello” 프로젝트 파일을 생성하고 골격코드를 작성한다. (SDI 모드)
Dialog Box 제작 새로운 다이얼로그 박스를 제작. 윈도우프로그램예제 Dialog Box 제작 새로운 다이얼로그 박스를 제작. Insert 메뉴에서 Resource 항목을 선택하여 Insert Resource 다이얼로그 박스를 출력.
Dialog Box 제작 다이얼로그 에디터화면에서 오른쪽 버튼을 누르면 자주 사용하는 명령이 팝업 메뉴로 나타난다. 속성(Property)을 선택
Dialog Box 제작 팝업 메뉴에서 Properties 항목을 선택하면 Dialog Properties 박스가 나타남. Dialog Box ID : IDD_MY_DIALOG
Dialog Box 제작 컨트롤 툴 바에서 원하는 컨트롤을 가져와 다이얼로그 박스에 추가. 컨트롤 툴 바에서 원하는 컨트롤을 가져와 다이얼로그 박스에 추가. 컨트롤을 더블 클릭하여 Properties 박스에서 속성을 조정 push button ID : IDC_BUTTON1 Edit box ID : IDC_EDIT1
Dialog Box 제작 다이얼로그 박스의 클래스 생성. 클래스 위저드 실행하여 new class 항목 선택. Class name: CMyDlg 입력
Dialog Box 제작 다이얼로그 박스의 Edit Box 컨트롤에 데이터 멤버 변수를 정의. ClassWizard 를 실행한뒤 member variable 탭을 선택 Project : hello Class name : CMyDlg 에서 아래와 같이 설정. Control Ids : IDC_EDIT1 Member name : m_str Variable Type : Cstring
Dialog Box 제작 Push button에 대한 이벤트 처리 Push button은 버튼을 클릭할때 BN_CLICKED메시지가 발생함. ClassWizard 를 실행시켜 CMyDlg클래스에 Push Button의 버튼 메시지 BN_CLICKED 에 대한 메시지 핸들러 OnClickHere함수 설치.
Dialog Box 제작 OnClickHere 함수를 수정 Void CMyDlg :: OnClickHere() { 사용자가 “여기를 누르세요”라는 버튼을 클릭하면 이 함수가 실행되어 Edit box에 “Hello World”라는 문자열을 출력한다. ClassWizard 에서 Edit Code버튼을 클릭한다. Void CMyDlg :: OnClickHere() { Cstring str=“Hello , World”; SetDlgItemText(IDC_EDIT1,str); }
Dialog Box 제작 다이얼로그 박스를 호출할 메뉴 작성. Menu 리소스IDR_MAINFRAME을 열어 “나의메뉴”를 만들고 Hello(IDM_HELLO) 메뉴항목을 만든다.
Dialog Box 제작 ClassWizard를 실행시켜 메뉴항목에 대한 명령 핸들러를 만든다. Class Name : CHelloView Object ID : IDM_HELLO Message: COMMAND Member Function: OnHello
Dialog Box 제작 OnHello 함수를 수정한다. #include “MyDlg.h”//다이얼로그 박스//의 클래스 선언 void CHelloView :: OnHello() { //뷰에서 다이얼로그 박스를 사용하 //기 위한 변수 선언. CMyDlg dlg; dlg.m_str=“값이바뀝니다.” dlg.DoModal();//모달 다이얼로그 박 //스를 호출. //다이얼로그 박스에서 작업이 끝나면 뷰로 돌아온다. CClientDC dc(this); dc.TextOut(0,0,dlg.m_str); } OnHello 함수를 수정한다. 다이얼로그 박스를 화면에 띠우기 위해서는 다이얼로그 클래스로 객체를 만들고 DoModal함수로 다이얼로그 박스를 호출한다. ClassWizard에서 Edit code버튼을 클릭하면 코딩할수 있는 화면이 나타난다.
Dialog Box 제작 Build 메뉴에서 프로그램을 컴파일하고 실행한다. Build 메뉴에서 Build항목을 선택하여 hello.exe를 만듬. 에러가 없으면 Build메뉴에서 Execute hello.exe항목을 선택하여 프로그램 실행.