제1장 윈도우 프로그래밍 1.1 윈도우 프로그래밍의 개념 1.2 윈도우 프로그램의 기본 구조

Slides:



Advertisements
Similar presentations
기업 인사담당자가 밝힌 면접 합격 비법 취업포털 사람인 ( 기업 인사담당자 397 명 조사 )
Advertisements

가. 3 일 취업완성 ! 성취반 _ 성공 취업 반 1 일차 시간 프로그램 내용비고 17:00 ~ 17:10 출석 및 일정 안내 17:10 ~ 18:10 취업 전략 및 채용 프로세스 이해 18:10 ~ 19:30 입사지원서 작성법 및 주요 기업 에세이 작성법 19:30 ~
강의 내용 : DirectX 개요 DirectX 9 을 이용한 시각화. 목 차 DirectX 출현 배경 DirectX 현재 버전 DirectX 장점 DirectX 구성요소 DirectX SDK 다운로드 및 설치 DirectX SDK 폴더 구성 및 역할 샘플 코드 브라우저.
지하철 안내 앱 소개 제작자 : 손성준 P.S 이 사진은 내용과 관계없음을 명백히 알립니다.( 솔직히 전기동차라는 공통점이 있긴 하지만 ) 그리고 본인이 촬영하였음을 알립니다.
미디어 프로그래밍 II 소개.
컴퓨터 공학 설계 및 실험 I MFC programming
4. 기본적인 그리기.
2장. 윈도우즈 입출력 1/211 1.
윈도우 일반 공주영상대학 게임과 이 은 순.
7장. MDI 프로그래밍 MDI 프로그래밍에 대한 내용을 배우도록 한다. 지금까지 배운 것은 생성된 윈도우에 단일 화면이 존재하는 형태였다. 이것을 SDI라고 부르고 Single Document Interface의 약자이다. 하나의 문서를 하나의 화면에 보여주는 형태의.
제 11 장 구조체.
Windows Programming Chapter 1. Introduction to SDK
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다.
C++ Espresso 제1장 기초 사항.
Visual C++ Programming Document/View Architecture 3
제1장 윈도우 프로그래밍 1.1 윈도우 프로그래밍의 개념 1.2 윈도우 프로그램의 기본 구조
5장. 단축키와 비트맵 윈도우 프로그램에는 화면에서 사용자들의 입력을 받아 들이고 출력을 위한 코드 외 부분이 존재한다. 이 부분을 주로 리소스라고 부르고 이들은 주로 화면에 나타난다. 메뉴, 툴바, 비트맵, 단축키, 대화상자 등이 여기에 속한다. 이 부분들은 우리의 프로그램의.
윈도우의 화면 출력 원리를 이해한다. CDC 클래스를 이용한 화면 출력 기법을 배운다.
6장. 멀티스레드 멀티스레드 프로그래밍의 필요성을 이해하고 기본 개념을 익힌다.
Chapter 09. 소켓 입출력 모델(I).
고급 컴퓨터 프로그래밍 팀명:지식인 팀원:홍광수 원대연 이소정.
마이크로소프트 64bit 윈도우 컴퓨팅 구조와 로드맵
제12장 유연한 카메라 클래스 만들기 학기 컴퓨터게임(DirectX).
Windows Programming.
윤 홍 란 MFC 기초 윤 홍 란
Windows Programming 시작하기
제 1 장. JAVA란 작성자 : NLIP.
Win32 API Programming 이 계 임.
강사 : 이준근 Win32 API 강사 : 이준근
DirectX Audio 2002년 3월 최윤석 작성.
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
스레드의 개념과 동작 원리를 이해한다. MFC 스레드의 두 종류인 작업자 스레드와 UI 스레드 사용법을 익힌다.
Chapter 11. Raw 소켓.
Department of Digital Contents Sang Il Park
9장 글꼴.
9장 글꼴.
Window socket programming
16. DLL.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
Visual C++ Programming
제8장 스텐실.
MFC UI for TS Analyzer 서울시립대학교 컴퓨터통계학과 최 용 진.
강사 : 이준근 Win32 API 강사 : 이준근
Visual C++ Programming Common Controls
Lecture 3 Graphics with GDI
1. 윈도우 프로그래밍의 이해.
Windows Programming 시작하기
날짜: 팀명: TEAM-SIX 발표자: 이기영
MFC Internals.
Chapter 09. 소켓 입출력 모델(I).
여행자 보험 가입 시,기내용 목베게+투어팁스 무료맵북 증정
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Direct X Demo 따라하기 Direct X Wizard를 이용하여 프로젝트를 생성한다
GUI 소켓 애플리케이션 Chapter 08. * 학습목표 윈도우 GUI 애플리케이션의 구조와 동작 원리를 이해
WSAAsync Select 김대열 Bit - Academy Sunmoon University, Korea.
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 19장 윈도우 기반의 쓰레드 동기화 데이터베이스실험실 석사 2학기 조정희
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Network Programming - 최종보고서 -
본선대회 일정안내.
자바 5.0 프로그래밍.
문서의 제목 나눔고딕 45pt 작성자 | 소속팀 / 상위부서 | 이 문서는 나눔글꼴로 작성되었습니다. 설치하기.
DirectSound 프로그래밍 DirectSound를 사용하면 매우 짧은 지연 시간에 사운드를 재생해, 애플리케이션으로 하드웨어 리소스를 치밀하게 제어할 수 있다. DirectSound 인터페이스를 사용하여 다음과 같은 처리가 가능하게 된다. WAV 포맷의 파일 또는.
3장. 제어 메시지 처리하기 1/211 1.
Windows 프로그래밍 환경 및 MFC의 구조
문서의 제목 문서의 개요 작성자 이름 소속팀 소속팀 작성년월일
게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
DirectX 9 Ch1. Direct3D 초기화.
윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램
오늘은 기분이 좋아 예수님과 함께라서 내 안에 있는 예수님의 사랑을 너에게 뿌려 주겠어 오프닝 송.
Presentation transcript:

제1장 윈도우 프로그래밍 1.1 윈도우 프로그래밍의 개념 1.2 윈도우 프로그램의 기본 구조 실습 1-1 간단한 Win32 SDK 윈도우 프로그램 만들기 1.3 간단한 윈도우 애플리케이션의 분석 1.4 윈도우 프로그램의 기본 형식

윈도우 프로그래밍의 개념 윈도우 프로그래밍이란? 윈도우 프로그래밍하는 방법 사용자가 발생시키는 이벤트에 대한 메시지를 처리 하는 것 메시지 기반 (Message Driven) 프로그래밍 이벤트 기반 (Event Driven) 프로그래밍 윈도우 프로그래밍하는 방법 Win32 SDK (Software Development Kit) MFC (Microsoft Foundation Class)

윈도우 프로그래밍의 개념 윈도우 프로그래밍의 기본 구조 초기화 부분 메시지를 처리하는 부분

윈도우 프로그래밍의 개념 실제 프로그램에서의 형태 초기화 부분 메시지 처리 부분 Int WINAPI WinMain(… ) { } 메시지 처리 부분 LRESULT CALLBACK WndProc(…) 메시지 처리 루틴

윈도우 프로그래밍의 개념 WinMain 함수 함수 원형과 초기화 내용 윈도우 클래스 생성 윈도우 클래스 등록 Int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpszCmdLine, int nCmdShow) { 윈도우 클래스 생성 윈도우 클래스 등록 프레임 윈도우 생성 프레임 윈도우 화면에 표시 메시지 큐로부터 메시지를 받아 해당 프로시저로 보냄 }

윈도우 프로그래밍의 개념 Procedure 윈도우는 Message Driven 방식 프로시저는 여러 개가 될 수 있다. 윈도우 클래스마다 수행되는 프로시저가 다르다.

윈도우 프로그래밍의 개념 WinProc 함수 윈도우에서 들어온 메시지를 switch문을 이용하 여 처리하는 루틴이다. 함수 원형과 메시지 처리 형태 LRESULT CALLBACK WinProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { Switch(iMsg) 해당 메시지에 대한 처리 }

실습 1-1 간단한 Win32 SDK 프로그램 만들기 이 실습은 화면에 윈도우를 만들고 윈도우에 “I love Window Programming!”이라는 텍스트를 출력하는 SDK 기반의 프로그램을 작성하는 것이다.

실습 1-1 간단한 Win32 SDK 프로그램 만들기 키보드에서 아무 키를 눌렀다가 떼어보면 다음과 같 이 중앙에 메시지가 나올 것이다. [키보드가 눌린 경우] [키보드가 떼어진 경우]

실습 프로그램의 분석 windows.h 파일 WinMain() 함수 이 파일은 윈도우 애플리케이션을 작성하는데 필요한 매크로, 각종 API 함수, 메시지 등이 선언된 헤더 파일 이다. WinMain() 함수 운영체제에 윈도우를 생성하고 등록한다. 메모리에 프레임 윈도우를 생성하고 속성을 초기화하 여 화면에 표시될 수 있도록 한다. 메시지 루프를 생성하여 해당 윈도우에 대한 메시지 를 메시지 큐로부터 받아와 메시지를 해당 윈도우 프 로시저로 보낸다.

실습 프로그램의 분석 WinMain() 함수 윈도우 클래스를 생성한다. WNDCLASSEX WndClass; WndClass.cbSize = sizeof(WNDCLASSEX); WndClass.style = CS_HREDRAW | CS_VREDRAW; WndClass.lpfnWndProc = WndProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = hInstance; WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH); WndClass.lpszMenuName= NULL; WndClass.lpszClassName = szAppName; WndClass.hIconSm = 0;

실습 프로그램의 분석 WinMain() 함수 윈도우 클래스를 등록한다. 프레임 윈도우를 생성한다. RegisterClassEx(&WndClass); 프레임 윈도우를 생성한다. hwnd = CreateWindow( // 윈도우 생성 함수 szAppName, szTitleName, // 타이틀 바에 출력될 문자열 WS_OVERLAPPEDWINDOW,// 윈도우 스타일 CW_USEDEFAULT, // 윈도우 좌측 상단의 x좌표 CW_USEDEFAULT, // 윈도우 좌측 상단의 y좌표 CW_USEDEFAULT, // 윈도우의 너비 CW_USEDEFAULT, // 윈도우의 높이 NULL, // 부모 윈도우의 핸들 NULL, // 메뉴 또는 자식 윈도우의 핸들 hInstance, // 애플리케이션 인스턴스 핸들 NULL // 윈도우 생성 데이터의 주소 );

실습 프로그램의 분석 WInMain() 함수 프레임 윈도우를 화면에 표시한다. 메시지를 처리한다. ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); 메시지를 처리한다. while(GetMessage(&msg, NULL, 0, 0)) { // 가상 키 메시지를 문자 메시지로 변환한다. TranslateMessage(&msg); // 메시지를 해당 윈도우 프로시저로 보낸다. DispatchMessage(&msg); }

실습 프로그램의 분석 WndProc()함수 메시지를 switch문을 이용하여 처리 switch(message) { … case WM_PAINT : hdc = BeginPaint(hwnd, &ps); TextOut(hdc,10,10,szMsg1,strlen(szMsg1)); EndPaint(hwnd, &ps); break; }

윈도우에 텍스트를 출력하는 방법 TextOut() 함수 기본적인 텍스트 출력 함수의 원형 BOOL TextOut( HDC hdc, // 디바이스 컨텍스 핸들 int nXStart, // 문자 출력 시작점 X 좌표 int nYStart, // 문자 출력 시작점 Y 좌표 LPCTSTR lpString, // 출력할 문자열 int cbString // 문자열의 길이 );

윈도우에 텍스트를 출력하는 방법 DrawText() 함수 문자를 출력할 때 어느 영역을 정하고 이 영역에 출력하는 함수 문자를 출력할 때 어느 영역을 정하고 이 영역에 출력하는 함수 함수의 원형 Int DrawText( HDC hdc, // 디바이스 컨텍스 핸들 LPCSTR lpString, // 출력할 문자 int nLength, // 출력할 문자의 수 LPRECT lpRect, // 출력할 영역 UINT Flags // 출력 형식 플러그 );

윈도우에 텍스트를 출력하는 방법 출력 형식 플러그 플러그 값 내 용 DT_TOP 설정된 영역의 상단으로 DT_BOTTOM 내 용 DT_TOP 설정된 영역의 상단으로 DT_BOTTOM 설정된 영역의 하단으로 DT_LEFT 설정된 영역의 좌측으로 DT_RIGHT 설정된 영역의 우측으로 (DT_SINGLELINE과 함께 지정되어야 한다) DT_CENTER 설정된 영역의 가로 중앙에 정렬 DT_VCENTER 설정된 영역의 세로 중앙에 정렬 DT_CALCRECT 텍스트가 출력할 사각형의 영역을 계산 DT_SINGLELINE 행 바꿈과 라인 피드를 무시하고 한 줄로 출력

윈도우 프로그래밍의 개념 윈도우 프로그램의 기본 형식 핸들을 받아서 그 핸들을 사용하거나 핸들을 만들 어서 설정하여 사용한다. 예 : 라인을 그린다. 그릴 화면 핸들을 받고, 라인을 그릴 펜이라는 핸들을 만들고, 펜이라는 핸들을 이용하여 그릴 화면 핸들에 라인을 그린다. 객체를 컨트롤하기 위해 핸들이 필요하다 구조체로 시작하여 구조체로 끝난다 H가 붙지 않는 이상한 것은 모두 구조체이다.

새로운 데이터 형식 MSG 구조체 메시지 큐에 저장되는 정보를 담고 있는 구조체 typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;

새로운 데이터 형식 WINDOWCLASSEX 구조체 윈도우 속성에 대한 정보를 포함하는 구조체 typedef struct _WNDCLASS { UINT cbSize; // 구조체의 크기를 나타낸다. UINT style; // 윈도우의 스타일을 지정한다. WNDPROC lpfnWndProc; // 윈도우 프로시저에 대한 포인터를 지정한다. int cbClsExtra; int cbWndExtra; HANDLE hInstance; // 프로그램 자체에 대한 핸들을 지정한다. HICON hIcon; // 윈도우에서 사용될 아이콘에 대한 핸들을 지정 HCURSOR hCursor; // 윈도우에서 사용할 커서에 대한 핸들을 지정 HBRUSH hbrBackground; // 윈도우의 백그라운드 브러시에 대한 핸들 지정 LPCTSTR lpszMenuName; // 윈도우에서 메뉴의 이름을 지정하며, // 리소스에서 사용된다. LPCTSTR lpszClassName; // 윈도우 클래스의 이름을 명시한다 HICON hIconSm; // 작은 아이콘에 대한 핸들을 지정한다. } WNDCLASSEX;

새로운 데이터 형식 PAINTSTRUCT 구조체 이 구조체는 텍스트나 이미지를 윈도우의 클라이언 트 영역에 그리고자 할 때, 사용자 정보를 포함 typedef struct tagPAINTSTRUCT { HDC hdc; // 디스플레이 컨텍스트에 대한 핸들을 지정한다. BOOL fErase; // 윈도우의 백그라운드를 다시 그릴지 지정한다. RECT rcPaint; // 그리고자 하는 영역을 사각형 구조체를 이용해 지정한다. BOOL fRestore; // 시스템에 예약되어 있으며, 내부적으로 이용된다. BOOL fIncUpdate; // 시스템에 예약되어 있으며, 내부적으로 이용된다. BYTE rgbReserved[16]; // 시스템에 예약되어 있으며, 내부적으로 이용한다. } PAINTSTRUCT;

새로운 데이터 형식 RECT 구조체 사각형 형태의 좌표를 지정하는 구조체 typedef struct tagRECT { LONG left; // 맨 왼쪽의 좌표를 명시한다. LONG top; // 맨 위쪽의 좌표를 명시한다. LONG right; // 맨 오른쪽의 좌표를 명시한다. LONG bottom; // 맨 아래쪽의 좌표를 명시한다. } RECT;

헝가리언 표기법 변수 이름은 데이터 형식을 의미하는 하나이상 의 소문자로 시작한다. Microsoft의 프로그래머인 Charles Simonyi를 기리는 뜻으로 붙여진 이름 작성한 프로그램에서 오류나 버그가 발생하기 전에 에러를 방지할 수 있게 해준다. 변수의 사용과 더불어 데이터 형식을 기술해 줌으 로써, 데이터 형식 불일치 같은 코딩 오류를 방지 한다.

윈도우 시스템의 이해 윈도우는 GUI 이다. 윈도우는 멀티태스킹을 지원한다. 윈도우는 메시지 기반 구조이다. 윈도우는 윈도우 프로시저를 호출한다.

연습문제 1-1 <실습 1-1>에서 작성한 <간단한 윈도우 프로그 램>을 수정하여 다음과 같은 기능을 취하도록 구현해 보자. 생성된 윈도우에서 마우스 버튼을 눌렀을 경우와 마우 스가 이동 중일 때 윈도우의 중앙에 텍스트를 출력해보 자. 마우스 왼쪽 버튼을 눌렀을 경우에는 “마우스가 눌 러졌습니다.” 라는 텍스트를, 마우스가 이동 중일 경우 는 "마우스가 이동 중 입니다." 라는 텍스트를 출력한다. 왼쪽 마우스 버튼을 떼었을 경우는 출력된 텍스트를 지 운다.

연습문제 1-1 실행 결과 [마우스가 눌린 경우] [마우스가 이동하는 경우]

연습문제 1-2 위에서 작성한 <연습 1-1>에 이어서 마우스 왼쪽 버튼에 대해 다음과 같은 기능이 추가되도록 구현 해보자. 생성된 윈도우에서 마우스가 눌러졌을 경우 “마우스가 눌러졌습니다.” 라는 텍스트와 함께 마우스가 눌린 점의 좌표 값을 마우스를 눌러진 위치에 출력해 보도록 하자.

연습문제 1-2 실행 결과 [마우스가 눌린 경우]