Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌
Computer Graphics 2 윈도우 시스템 윈도우 스크린 위에서 독립적으로 움직일 수 있는 사각형 영역 윈도우 시스템 유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를 담당하는 소프트웨어 윈도우 어플리케이션을 디스플레이에 표시하고, 유저의 조작 ( 키보드, 마우스 ) 을 어플리케이션에 반영 어플리케이션을 위한 라이브러리 제공 폰트, 이미지 등 데이타 규약 및 실제 데이터 제공 유저인터페이스 외관, 사용법의 규약 제공
Computer Graphics 3 윈도우 시스템 구조 어플리케이션 Display device, Keyboard, Pointing device(mouse) etc. 디스플레이를 위한 장치 비의존적인 소프트웨어 자원 할당, 어플리케이션 간 통신, 하위 layer 할당 기본 윈도우 시스템 그래픽스 라이브러리 하드웨어 유저 인터페이스를 만들기 위해 사용되는 기능 유저 인터페이스 툴킷
Computer Graphics 4 GUI 와 윈도우 시스템 어플리케이션 윈도우시스템 오퍼레이팅 시스템 툴킷 어플리케이션 프로그램 UNIX OSMS-DOS Windows X 윈도우 X View Motif Intrinsics
Computer Graphics 5 윈도우 운영체제의 장점 그래픽 유저 인터페이스 (GUI) 스크린 영역을 유용하게 사용 시각적으로 풍부한 환경 제공 정형화된 그래픽과 문자 일관된 유저 인터페이스 하나의 윈도우용 프로그램을 사용할 줄 알면 다른 것도 그대로 사용 프로그래머 관점 윈도우에 내장된 루틴을 이용 장치 독립적인 프로그램 프로그램 작성시 프린터, 마우스, 키보드, 사운드 카드,CD-ROM 드 라이브등의 장치 사용이 자유로움
Computer Graphics 6 윈도우 프로그래밍 윈도우가 지원하는 550 개 이상의 함수 호출 Windows SDK 의 “windows.h” 에 정의되어 있음 윈도우 프로그램은 윈도우와 동적 연결 프로그램 내의 함수의 호출은 동적 연결 라이브러리의 시작 번지 로의 연결 윈도우의 동적 연결 라이브러리 Kernel : 메모리 관리, 프로그램 관리, 스케쥴 관리 User : 유저 인터페이스, 윈도우화 관리 GDI : 그래픽 처리
Computer Graphics 7 윈도우 프로그래밍 ( 계속 ) 메시지 구동 아키텍춰 윈도우는 프로그램에 메시지를 보냄 즉, 윈도우 프로시져 ( 프로그램 또는 DLL 함수 ) 호출 ( 예 ) 윈도우 크기 변경 윈도우가 프로그램에 크기 변경 메시지 전달 프로그램이 윈도우 조정 비디오 디스플레이에 그림 그리기 예 윈도우 생성 윈도우 핸들 필요 디바이스 핸들 필요 윈도우로 가는 메시지 받기 메시지 처리 윈도우즈 프로시져
Computer Graphics 8 컴퓨터 그래픽 프로그래밍 컴퓨터에서 그림, 도표, 영상 등의 그래픽을 표현하기 위한 방법과 알고리즘, 즉, CG 를 컴퓨터 언어를 통해 구 현하거나 응용하는 프로그램을 작성하는 행위 그래픽 에디터, 3D 툴영상을 얻기 위한 그래픽스 툴 프로그램 CG 작품 프로그램영상을 보여주는 전용 프로그램 프랙탈도형이 중시되는 수학용 프로그램 2D, 3D 그래픽 라이브러리기본작도를 위한 함수 프로그램 게임엔진, 3D 엔진 게임에서 CG 를 표현하기 위한 기본함수를 위한 프로그램
Computer Graphics 9 Visual C++ 의 개요 전통적인 C/C++ 개발 과정에 통합된 윈도우 중심의 개 발 툴과 비주얼한 사용자 인터페이스 중심의 패러다임 을 결합한 개발 툴 구성 개발환경도구 + MFC( 클래스 라이브러리 ) 일반 윈도우 응용 프로그램, 클라이언트 / 서버, 인터넷, 데이터베이스 등 다양한 응용 프로그램 개발이 가능
Computer Graphics 10 Visual C++ 의 특징 Visual C 윈도우와 인터넷 플랫폼에 알맞은 어플리케이 션을 개발하기 위한 객체 지향적인 프로그램 개발도구 작고 수행속도가 빠른 실행파일을 만드는 향상된 컴파 일러 제공 컴파일러의 COM(Component Object Model) 을 지원하여 COM 기반 어플리케이션을 쉽게 만듦 자동화된 프로그래밍을 제공하여 대부분의 코드는 Visual C++ 가 만들어 주고 프로그래머는 꼭 필요한 부분 에 원하는 기능을 추가하여 작성하므로 빠른 어플리케 이션 작성이 가능
Computer Graphics 11 Visual C++ 의 구성 개발자 스튜디오 프로젝트 워크스페이스 윈도우 어플리케이션 위저드 리소스 에디터 클래스 위저드 C/C++ 컴파일러 리소스 컴파일러 Just-in-time 디버거
Computer Graphics 12 Visual C++ 의 구성 ( 계속 ) 개발자 스튜디오 프로그램 개발과 관련된 모든 작업을 수행할 수 있는 통합개발 환경 프로그램 생성과 갱신을 관리하기 위해 프로젝트 파일을 사용 프로젝트 : 윈도우 프로그램을 만들기 위해 컴파일되고, 링크되고, 바운드 될 소스 파일들에 대한 정보를 모아 관리하는 파일 프로젝트 워크스페이스 윈도우 응용 프로그램의 프로젝트에 포함된 클래스, 리소스, 소스 코 드 파일 등을 일목요연하게 살펴볼 수 있도록 여러 속성 시트 형태로 구성된 윈도우 ClassView, ResourceView, FileView, InfoView 로 구성
Computer Graphics 13 Visual C++ 의 구성 ( 계속 ) 어플리케이션 위저드 대화상자를 통해 응용 프로그램의 특성을 선택하여 윈도우 응용 프로그램의 기본 작업 골격 (Application Framework) 을 만들어 주는 코드 생성기 리소스 에디터 응용 프로그램에서 사용하는 화면에 보여주는 여러 리소스를 생성, 수정하는 에디터 리소스 객체들을 디자인하고 이를 실제 코딩상의 객체로 연결 시켜 주기 위하여 윈도우 메시지 프로시저에 처리루틴 만들어 줌
Computer Graphics 14 Visual C++ 의 구성 ( 계속 ) 클래스 위저드 프로젝트에서 사용하는 클래스를 관리하고, 자원 에디터에 서 생성한 리소스와 클래스의 멤버 함수 또는 데이터 멤버를 연결시키는 역할 C/C++ 컴파일러 소스 프로그램의 확장자에 따라 확장자가 C 이면 C 언어로, 확 장자가 CPP 이면 C++ 언어로 컴파일 헤더 파일에서 변경된 부분과 관련된 부분만을 컴파일하는 Minimal Rebuild 방법을 사용함으로 컴파일 속도 향상
Computer Graphics 15 Visual C++ 의 구성 ( 계속 ) 리소스 컴파일러 리소스들이 별도로 컴파일 되어 실행 파일과 연결됨 컴파일 모드 자원 에디터로부터 생성된 자원 스크립트 파일 (RC) 을 이진 RES 파일로 컴파일 바인드 모드 RES 파일을 실행 파일과 합병 Just-in-time 디버거 프로그램 실행 중에 에러가 발생하면 바로 그 시간 (Just-in- time) 에 디버거가 실행되어, 에러를 발생시킨 위치에 중지점 (breakpoint) 를 설정하고 디버깅 작업을 수행
Computer Graphics 16 MFC 라이브러리 MFC(Microsoft Foundation Class) 윈도우 하에서 응용 프로그램을 만드는 골격을 지원하 는 C++ 클래스들의 모임 윈도우가 제공하는 Win32 API 함수들을 체계적으로 통 합한 클래스 API 중 중요하고 많이 사용되는 구성요소만을 클래스화
Computer Graphics 17 MFC 의 장점 객체지향적이고 윈도우에 대한 High-level Interface 를 제공 응용 프로그램의 소스 코드를 바로 수정하지 않고, MFC 의 클 래스를 상속받아 새로운 클래스를 만들고, 필요한 멤버함수를 오버라이딩 응용 프로그램 설계 시 노력 절감 GUI 요소를 만드는 것보다 데이터를 다루는 코드에 노력 집중 하게 함 프로그래밍 툴 (AppWizard, ClassWizard, Component Gallery) 을 사용할 수 있고, 객체 지향 프로그래밍과 이벤트 처리 방식 프로그래밍 방식에 따라 쉽게 프로그램이 가능
Computer Graphics 18 Visual C++ 어플리케이션 생성과정 Developer Studio (AppWizard, ClassWizard 포함 ) C++ 컴파일러 윈도우 런 타임 클래스 라이브러리 파일 OBJ 파일 링커 실행 가능한 프로그램 (exe) 클래스 라이브러리 프로젝트 정의 (DEF) 파일 윈도우 라이브러리 와 런 타임 라이브러리 프로젝트 소스파일 (CPP,H) 메뉴, 비트맵, 아이콘 등 표준 리소스 리소스 스크립트 파일 (RC) 리소스 컴파일러 ( 컴파일 모드 ) 리소스 파일 (RES) 리소스 컴파일러 ( 바인드 모드 )
Computer Graphics 19 윈도우 프로그래밍 과제물 도형 모양과 칼라 선택하여 도형 그리기 마우스를 클릭한 곳에 지정된 모양과 색깔의 도형 그리기
Computer Graphics 20 과제물 요구사항 내용 제공하는 코드를 참조하여, 그려질 도형과 칼라를 추가 기본 요구사항 삼각형, 타원, 다각형, 부채꼴, etc.. 등의 도형을 추가할 수 있 어야 함 Black, Red, Green, Blue 이외의 색상을 지정할 수 있어야 함
Computer Graphics 21 과제물 추가 구현 사항 도형을 그룹화 해서 새로운 도형을 만듦 하트, 별, 꽃, 나비, 벌 등 수학 함수를 이용한 Field of “Flower” 마우스를 클릭한 지점에 다양한 모양의 꽃을 그려 줌 꽃잎의 표현은 수학 함수를 이용. 꽃밭은 여러 가지의 꽃이 존재하여야 함.
Computer Graphics 22 꽃잎 만드는 루틴 포트란 소스. PROGRAM SPAT CALL START(40,0) CALL SPIRO(12,7,5) STOP END SUBROUTINE SPIRO(A,B,D) INTEGER A,B,D,AMB PI=ACOS(-1,0) AMB=A-B THETA=0.0 THINC=PI*O.O2 N=B/ICF(A,B) NUM=N * 100 CALL MOVETO(FLOAT(AMB+D),0.0) DO 101 I=1,NUM THETA=THETA* THINC PHI=THETA*FLOAT(AMB)/FLOAT(B) X=FLOAT(AMB)*COS(THETA)+FLOAT(D)*COS(PHI) Y=FLOAT(AMB)*SIN(THETA)+FLOAT(D)*SIN(PHI) CALL LINETO(X,Y) END FUNCTION ICF(II,JJ) I=II J=JJ M=MOD(I,J) IF(M.NE. 0) THEN I=J J=M GOTO 99 ENDIF ICF=J RETURN END 왼쪽 코드 실행 결과
Computer Graphics 23 과제물 제출 및 평가 기준 제출물 실행파일, 보고서 자신이 구현한 부분의 소스 코드 포함, 문제 접근방법 및 알고 리즘 설명 평가기준 기본 요구사항의 구현 독창성 제출기한 준수
Computer Graphics 24 Visulal C++ 시작하기 시작 메뉴에 있는 아이콘을 클릭한다.
Computer Graphics 25 Visual C++ 개발 Tool 아이콘을 클릭하면 아래와 같은 프로그램 개발 도구가 화면에 나타난다.
Computer Graphics 26 Visual C++ 개발도구 구성 메뉴 바 Project Workspace window File Edit Window Output Window
Computer Graphics 27 윈도우 어플리케이션 개발 과정 1. AppWizard 를 이용하여 윈도우 틀 (framework) 형성 2. Visual design 단계 3. 코드 작성 단계 4. 컴파일 및 링크 ( 실행 파일 생성 )
Computer Graphics AppWizard 를 이용하여 윈도우 틀 (framework) 형성
Computer Graphics Visual design step 리소스 편집기를 이용하여 사용자 인터페이스를 구성하는 오브젝트 생성 눈에 보이는 부분 설계 프로그램의 모양을 만듬. 비주얼 C++ 에 내장된 기 능을 사용해서 여러가지 개체를 만듦.( 푸쉬버튼, 스 크롤 바, 라디오 버튼 등 )
Computer Graphics 코드 작성 단계 ( code-writing step) ClassWizard 를 이용하여 사용자 인터페이스 오브젝트에 대한 메시지 처리 코드 생성 혹은 에디터에 직접 코드 작성 눈에 보이지 않는 부분의 설계 - 코드와 리소스의 연결
Computer Graphics Application source code 컴파일 및 링크 ( 실행파일 생성 )
Computer Graphics 32 윈도우즈 프로그램 예제 1. 기본 윈도우 틀 만들기 2. 대화상자 (Dialog box) 만들기 3. 그래픽 프로그램 도형 모양과 색깔 선택하여 도형 그리기.
Computer Graphics 33 윈도우즈 프로그래밍 예제 (I) 기본 윈도우 틀 만들기 File 의 New 메뉴 를 선택한다.
Computer Graphics 34 AppWizard 를 이용하여 기본 윈도우 틀 만들기 아무 기능도 수행하지 않는 골격 프로그램 Step1: “my” 라는 이름 의 프로젝트 생성 & 골 격 코드 작성 1) File 메뉴의 New 항목 2) MFC AppWizard 선택 3) 프로젝트명 입력 4) OK 버튼 클릭
Computer Graphics 어플리케이션 특성 선택 Single document : 하나의 다큐 먼트를 갖는 어플리케이션 Multiple documentation : 각각 의 윈도우를 갖는 여러 개의 다 큐먼트를 작업할 수 있는 어플 리케이션 Dialog based : 다이얼로그 박 스가 나타나는 어플리케이션
Computer Graphics 데이터베이스 지원옵션 None Header files only : 데이터베 이스 지원하는 AfxDb.h 헤더 파일을 포함하는 어플리케이 션 생성. Database view without file support : 데이터베이스를 지원 하는 어플리케이션은 생성하 나 파일을 지원하지는 않음. Database view with file support : 데이터베이스와 파일 지원하는 어플리케이션
Computer Graphics OLE 지원 옵션 None Container : OLE 컨테이너 어플리케이션 생성. Mini-server : 단독적으로 실행될 수 없으며 단지 포 함 객체만 생성하는 어플 리케이션 Full-server : 단독적으로 실행될 수 있으며, 포함 연 결 객체도 생성하는 어플 리케이션 Both container and server : OLE 컨테이너와 서버를 지 원하는 어플리케이션 생성
Computer Graphics 사용자 인터페이스 옵션 Docking toolbar : 이동가능한 툴바를 만듬. Initial status bar : 윈도우 하단 에 상태바를 만듬 Printing and print preview : 인 쇄와 관련된 메뉴 설정 Context-sensitive Help : 구문인 식 도움말 제공하는데 사용되 는 도움말 파일 생성. 3D controls : 입체적인 형태로 리소스를 이용 MAPI : 편지보내기와 관련된 메뉴 & 명령코드 Windows Socket : TCP/IP 네트 워크상에서 통신할 수 있는 어 플리케이션 생성
Computer Graphics 생성파일 내용옵션 결정 Yes, please : 소스파일 에 주석문 추가 No, thank you : 주석문 추가하지 않음. As a shared DLL : 공유 DLL 사용 As a statically linked library : 정적 링크 라이 브러리
Computer Graphics 생성된 클래스 명 및 파일명 지정 생성된 클래스들의 이 름과 구현 파일명을 보여 줌. New Project Information 다이얼로 그 박스가 출력.
Computer Graphics AppWizard 를 이용한 기본 윈도우 틀 생성 결과