Microsoft PowerPoint - 04windows.ppt

Similar documents
1장 윈도우 프로그래밍 들어가기

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

MFC 프로그래밍

윈도우 프로그래밍

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - hci2-lecture1.ppt

Microsoft PowerPoint - 09-CE-7-선과 도형

윈도우즈 프로그래밍

5장 MFC기반 다지기

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770>

04장 메시지 처리 유형

PowerPoint 프레젠테이션

Chapter 1. MFC 시작하기

<312DBED5BACEBCD328B8D3B8AEB8BB2CB8F1C2F7292DBCF6C1A42E687770>

Microsoft Word - game08-midterm.doc

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

<4D F736F F D204B FC7C1B7CEB1D7B7A55FB4D9C0CCB7BAC6AE20B5E5B7CEBFEC20B3BBBFA120B4EBC8AD20BBF3C0DA20BBE7BFEBC7CFB1E25FB1E8B5BFC3B62E646F63>

Microsoft PowerPoint - 09-CE-14-리스트콤보박스

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

Microsoft PowerPoint - hci2-lecture5-messagemap.ppt

4S 1차년도 평가 발표자료

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

C프로-3장c03逞풚

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

제8장 자바 GUI 프로그래밍 II

예제와 함께 배워보는 OllyDbg사용법

2014 년정보보호졸업작품보고서 파일유출방지시스템 지도교수님 : 양환석교수님 팀명 : LKC Security 팀원 : 이호영, 김상우, 최유택 중부대학교정보보호학과

歯Lecture2.PDF

슬라이드 1

K&R2 Reference Manual 번역본

IS119_Message.Hooking_이성재.hwp

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

BMP 파일 처리

Microsoft PowerPoint - 09-CE-25-오목게임

윈도우즈 프로그래밍

PowerPoint Presentation

歯MDI.PDF

Microsoft PowerPoint - 07-Data Manipulation.pptx

초보자를 위한 C# 21일 완성

윈도우즈 프로그래밍

Microsoft Word - hook4.doc


API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

Microsoft PowerPoint - 09-Object Oriented Programming-3.pptx

Visual Basic 반복문

Microsoft Word - hook3.doc

게임 기획서 표준양식 연구보고서

유저영역후킹탐지시스템 팀 명 : D.N.F (Do Not Fishing) 지도교수 : 유승재교수님 팀 장 : 신동순 팀 원 : 서현찬이치목 중부대학교정보보호학과

PowerPoint 프레젠테이션

Microsoft PowerPoint - (제15강)Win32 API.ppt

Lab 3. 실습문제 (Single linked list)_해답.hwp

Chapter 4. LISTS


학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

GDI 와 DC GDI (Graphics Device Iterface) 응용프로그램이하드웨어를제어할수있도록윈도우 OS 가제공하는모든기능 윈도우가출력장치에대한정보를스스로판단하고분석하여, 실제로사용할드라이버를불러옴 이를이용할경우, 하드웨어독립적인프로그래밍을할수있음 Widw

03장.스택.key

개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API

13주-14주proc.PDF

Microsoft PowerPoint - CPP_chap3

PCServerMgmt7

PowerPoint 프레젠테이션

GDI의 개념

윈도우즈 프로그래밍

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Chapter #01 Subject

chap 5: Trees

6주차.key

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

슬라이드 1

슬라이드 1

UI TASK & KEY EVENT

Microsoft PowerPoint - chap01-C언어개요.pptx

vRealize Automation용 VMware Remote Console - VMware

[제1강] 텍스트를 입력하세요

그래픽 프로그래밍

10 장세균전프로그래밍 10.1 게임룰 (1) 사람과컴퓨터가싸우는 2인용보드게임이다. (2) 사람이먼저움직이고, 컴퓨터가움직인다. (3) 세균을가로및세로방향으로 2칸까지빈칸으로이동시킬수있다. (4) 1칸을이동할경우에는복제가된다. (5) 이동한후주변세균은내편으로바뀐다.

SMV Vending Machine Implementation and Verification 김성민 정혁준 손영석

윈도우시스템프로그래밍

5.스택(강의자료).key

untitled

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

PowerPoint 프레젠테이션

Modern Javascript

C# Programming Guide - Types

204

슬라이드 1

untitled

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

Chapter_02-3_NativeApp

2009년 상반기 사업계획

윈도우 프로그래밍의 개념

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

DBMS & SQL Server Installation Database Laboratory

Transcription:

Game Programming I Windows 프로그래밍 (1) March 27, 2006 목표 윈도우프로그래밍에서이용되는이벤트구동프로그래밍모델의이해 Direct3D 를이용하는윈도우어플리케이션의작성을위한최소한의코드이해

윈도우 (Win32) 어플리케이션 Direct3D API ( 어플리케이션프로그래밍인터페이스 ) 를이용하기위해필요 Win32 API 를이용해작성 C 프로그래밍언어로공개된저수준함수와구조체의집합 우리가작성한어플리케이션과운영체제 (OS) 가서로통신하도록도와줌 핵심테마 창을제어하는것 메뉴, 도구모음, 스크롤바, 버튼, 대화상자컨트롤 둘러보기 자원 (Resources) CPU 사이클, 메모리, 모니터화면등 다수의어플리케이션은자원을공유 이벤트 (Events), 메시지큐, 메시지, 메시지루프 이벤트구동프로그래밍모델 ( event-driven programming model ) 이벤트발생 메시지전달 메시지큐에추가 메시지루프가메시지확인 해당하는창의윈도우프로시저로메시지전달

어플리케이이벤트구동프로그래밍모델 이벤트 어어플메플메리시리시케지케지이션션큐이션큐A B C 메시지큐어플리케이션 A 메시지루프 어플리케이션 B 메시지루프 어플리케이션 C 메시지루프 윈도우프로시저 A1 윈도우프로시저 B1 윈도우프로시저 C1 윈도우프로시저 C2 GUI (Graphical User Interface) 그래픽사용자인터페이스 윈도우의캡션바메뉴바 툴바 대화상자 버튼컨트롤 상태바 윈도우클라이언트영역 크기조절바

MS Visual C++ 6.0 File New 2 3 1

New Win32 Application New Win32 Application

ClassView FileView

File New 1 2 New C++ File

Hello main.cpp #include <windows.h> HWND MyMWindowHandle = 0; LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE, LPSTR, int nshowcmd ) { // Create the main window } // Main message loop LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { }

WNDCLASS 와등록 // Registers the window class WNDCLASS wc; wc.style = CS_HREDRAW CS_VREDRAW; wc.lpfnwndproc = (WNDPROC)WndProc; wc.cbclsextra = 0; wc.cbwndextra = 0; wc.hinstance = hinstance; wc.hicon = LoadIcon( hinstance, IDI_APPLICATION ); wc.hcursor = LoadCursor( 0, IDC_ARROW ); wc.hbrbackground = (HBRUSH)GetStockObject( WHITE_BRUSH ); wc.lpszmenuname = 0; wc.lpszclassname = szclassname; RegisterClass(&wc); MSDN Library (1)

MSDN Library (2) MSDN Library (3)

윈도우만들기와보여주기 // Create the main window MyMWindowHandle = CreateWindow( szclassname, "Hello", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hinstance, 0 ); if(!mymwindowhandle ) return false; ShowWindow( MyMWindowHandle, nshowcmd ); UpdateWindow( MyMWindowHandle ); 메시지루프 // Main message loop MSG msg; while( GetMessage( &msg, 0, 0, 0 ) ) { TranslateMessage( &msg ); DispatchMessage (&msg ); } UnregisterClass( szclassname, wc.hinstance ); return msg.wparam;

윈도우프로시저 LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { switch( msg ) { case WM_LBUTTONDOWN: MessageBox( 0, "Hello, World!!!", "Hello", MB_OK ); break; case WM_KEYDOWN: if( wparam == VK_ESCAPE ) { DestroyWindow( MyMWindowHandle ); } break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wparam, lparam ); } return 0; } MessageBox 함수 API 함수 int int MessageBox MessageBox ( HWND HWND hwnd, hwnd, LPCTSTR LPCTSTRlpText, LPCTSTR LPCTSTRlpCaption, UINT UINT utype utype ); ); hwnd 소유주윈도우의핸들 (null 가능 ) lptext 메시지상자에넣을텍스트 lpcaption 메시지상자의제목에넣을텍스트 utype 메시지상자의스타일 (MB_OK, MB_OKCANCLE, MB_YESNO, MB_ICONINFORMATION, MB_ICONQUESTION, ) 리턴값 IDOK, IDCANCLE, IDYES, IDNO,

향상된메시지루프 int Run( ) { MSG msg; while( true ) { if( ::PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) { if( msg.message == WM_QUIT ) break; } ::TranslateMessage( &msg ); ::DispatchMessage (&msg ); } else // 게임코드를실행한다. } return msg.wparam; 연습과제 (1) 윈도우어플리케이션에서다음을변경시키시오. 윈도우배경색상 아이콘 커서 윈도우의크기 메시지상자의내용 새로운메시지상자를생성하시오. 마우스우측버튼을클릭했을때, 메시지상자생성 키보드의 Enter키를눌렀을때, 메시지상자생성

선그리기 선 (Line) 두점사이의이동경로 마우스로드래그하는경로를따라생성 알고리즘 마우스왼쪽버튼이눌렸을때의위치 (x, y) 를저장 (x 1, y 1 ) 마우스가드래그된위치 (x, y) 와 (x 1, y 1 ) 사이의경로를직선으로그림 (x, y) 를 (x 1, y 1 ) 에저장 마우스왼쪽버튼이올라갈때까지계속반복 Creating Variables

Window Procedure (1) Window Procedure (2)

Result (1) 사각형그리기 펜 (pen) 과브러쉬 (brush) 의색상변경 create select delete HPEN CreatePen (( int intfnpenstyle, int intnwidth,, COLOREF crcolor ); ); PS_SOLID PS_DASH PS_DOT PS_DASHDOT PS_DASHDOTDOT HBRUSH CreateSolidBrush ( ( COLOREF crcolor ); ); HBRUSH CreateHatchBrush ( int fnstyle, COLORREF crcolor );

MSDN CreatePen MSDN CreateHatchBrush

Creating a Function Window Procedure

DrawRect( ) Result (2)

사각형움직이기 타이머 (Timer) 정해진간격으로시간을측정해주는내부함수 ( 단위 : milliseconds) 함수 SetTimer ( ), KillTimer ( ) 이벤트 WM_TIMER 알고리즘 WM_TIMER 통지를받을때마다사각형의위치를변경시킴 MSDN Timers

New Definition Creating a Timer

Window Procedure Killing a Timer

DrawRect( ) InvalidateRect( )

Result (3) Erasing the Background

Result (4) 연습과제 (2) 사각형을세로나대각선으로움직이도록만드시오. 사각형이윈도우의끝에부딪히면반대방향으로바꿔움직이도록만드시오. RECT RECT rect; rect; GetClientRect( MyMWindowHandle,, &rect& &rect ); ); rect.left, rect.top, rect.right, rect.bottom