윈도우즈 프로그래밍

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

PowerPoint 프레젠테이션

Chapter 1. MFC 시작하기

Microsoft PowerPoint - CPP_chap1

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

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

<312DBED5BACEBCD328B8D3B8AEB8BB2CB8F1C2F7292DBCF6C1A42E687770>

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

Microsoft PowerPoint - 04windows.ppt

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

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

MFC 프로그래밍

Microsoft PowerPoint - chap11-포인터의활용.pptx

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

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

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap10-함수의활용.pptx

디지털영상처리3

MFC 프로그래밍

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

Chapter #01 Subject

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

11장 포인터

Microsoft PowerPoint - chap06-2pointer.ppt

쉽게 풀어쓴 C 프로그래밍

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

디지털영상처리3

윈도우시스템프로그래밍

Microsoft PowerPoint - hci2-lecture1.ppt

슬라이드 1

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - hci2-lecture1.ppt

<322E20C0A9B5B5BFECC1EE20C7C1B7CEB1D7B7A1B9D620C3E2B7C22E687770>

Visual C++의 개요

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap06-1Array.ppt

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

Chapter 4. LISTS

<4D F736F F F696E74202D203032C0E520C0AFC6BFB8AEC6BC20C5ACB7A1BDBABFCD20C1FDC7D520C5ACB7A1BDBA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

< B0B3C0CEC1A4BAB8BAD0C0EFC1B6C1A4BBE7B7CAC1FD2E687770>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

chap 5: Trees

OOO Paint

슬라이드 1

Microsoft PowerPoint 웹 연동 기술.pptx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

금오공대 컴퓨터공학전공 강의자료

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

윈도우시스템프로그래밍

Microsoft PowerPoint - hci2-lecture5-messagemap.ppt

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

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

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

Frama-C/JESSIS 사용법 소개

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - 03-Points.pptx

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

01....b

2007백서-001-특집

00목차

(291)본문7

<B0EDB1DEC7C1B7CEB1D7B7A1B9D6284D DBFE4BEE0C1A4B8AE28B9DAB1E2C8AB292E687770>

윈도우즈 프로그래밍

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

鍮뚮┰硫붾돱??李⑤낯

강의 개요

PowerPoint Presentation

Microsoft PowerPoint - ch07 - 포인터 pm0415

설계란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint - logo_2-미해답.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

RVC Robot Vaccum Cleaner

이장에서다룰내용 테두리를제어하는스타일시트 외부여백 (Margin) 과내부여백 (Padding) 관련속성 위치관련속성 2

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

OCW_C언어 기초

UI TASK & KEY EVENT

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Presentation

PowerPoint 프레젠테이션

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

04장 메시지 처리 유형

PowerPoint Presentation

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드]

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

2_안드로이드UI

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Transcription:

윈도우프로그래밍및실습 003. 출력 DB & MINING LAB. Korea University 2 nd updated 2012. 08. 18 Last updated 2015. 08. 26 이종욱 eastwest9@korea.ac.kr 1

Purpose of this chapter How to show some information on your screen 2

3 장. Device Context(DC). 윈도우는세가지동적연결라이브러리 (Dynamic Linked Library) 로구성 KERNEL : 메모리를관리하고프로그램을실행 USER : 유저인터페이스와윈도우를관리 GDI : 화면처리와그래픽을담당. Graphic Device Interface Device Context(DC) 출력에필요한모든정보를가지는데이터구조체 GDI 모듈에의해관리 폰트, 선색상과굵기, 채움무늬와색상, 그리기등. 왜필요한가?! 화면출력 ( 모든그림, 글자 ) 은 GDI를통해야한다. 그런데, 개별적으로 GDI를이용하려면수많은설정을직접해야한다. 이러한문제점을 DC를이용하여보다효율적으로화면출력을다를수있다. 3

Device Context(DC) 필요성 (1/2) 화면에선을긋기위해필요한것은? 시작 끝위치정보, 선색상, 굴기, 모양, 선을그리는모드, 좌표값해석하는방법등의추가정보. LineTo(StratX, StartY, EndX, EndY, Color, Width, Shape, mode, ) 선을긋기위해그때마다수많은인수를입력?! LineTo(hDC, X, Y) : DC 핸들과, 끝점위치만인수로 (50, 50) 에서 (150,100) 좌표로선그리기 4

Device Context(DC) 필요성 (2/2) 윈도우는여러개의프로그램이동시에실행되는멀티태스킹시스템이 기때문에그리기함수에의해실제출력되는모양은주변환경에따라 달라진다. 2 가지영역이겹쳐졌을때어떻게그려야하는가?! Device Context 를통해서처리 (OS 가알아서처리하도록!) 윈도우끼리출력결과가서로를방해하지않도록완충역할 5

3-1a. 문자열출력 : TextOut 코드작성 (1/2) // 생략 6

3-1a. 문자열출력 : TextOut 코드작성 (1/2) //hdc 변수선언 // hdc 에현재윈도우정보넘겨주고, GetDC 함수가해당화면정보제어 7

3-1a. 문자열출력 : TextOut 출력 마우스왼쪽버튼클릭 - 크기조정 - 창을아래로 어떤변화? 문제점? 추가 ) 다른마우스창으로 Beautiful Korea 영역을가려본다 기존에는변화가있었음 8

3-1b. 문자열출력 : TextOut2 코드작성 (1/2) // 생략 // 생략 9

3-1b. 문자열출력 : TextOut2 코드작성 (2/2) // WM_PAINT 에서 // BeginPaint( ) 이용 10

3-1b. 문자열출력 : TextOut2 출력 - 크기조정 - 창을아래로 - 다른창으로가리기 질문! TextOut 과 TextOut2 코드의차이는? 11

Device Context 얻는법 1: GetDC( ) 먼저, hdc 선언 GetDC 함수를사용하여 DC를얻고사용후 RelleaseDC 함수로 DC 사용해제 HDC GetDC(HWND hwnd); int ReleaseDC(HWND hwnd, HDC hdc); GetDC는 hwnd가가리키는윈도우에적당한 DC를만들어핸들을리턴한다. ReleaseDC 함수사용이유? DC 를위해할당된메모리공간해제 HDC hdc; hdc = GetDC(hWnd); // 각종출력문에서 hdc를사용 ReleaseDC(hWnd, hdc); 12

Device Context 얻는법 2: BeginPaint( ) 먼저 HDC hdc; 선언 DC 핸들을 BeginPaint 함수로부터얻고, EndPaint 로해제. WM_PAINT 메시지루틴내에서만사용가능. HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lppaint); BOOL Endpaint(HWND hwnd, CONST PAINTSTRUCT *lppaint); Typedef struct tagpaintstruct { HDC hdc; PAINTSTURCT ps; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // 각종출력문에서 hdc를사용 HDC hdc; // 사용자사용 BOOL ferase; // 사용자사용 RECT rcpaint; // 사용자사용 BOOL frestore; // 윈도우즈내부 BOOL flncupdate; // 윈도우즈내부 BYTE RGBRESERVED[16]; // 윈도우즈내부 EndPaint(hWnd, &ps); }PAINTSTRUCT; 13

3-2. TextOut( ) 이해 : 문자열출력 BOOL TextOut( HDC hdc, int nxstart, int nystart, LPCTSTR lpstring, int cbstring ); 1. Device Context 핸들 3. 출력될문자열 y 위치 5. 출력될문자열길이 2. 출력될문자열 x 위치 4. 출력될문자열 코드작성예 // 문자열출력하는것이번거로움 다음과같이변경, 미리문자열포인터를만들어둔다. // 문자열을가리키는문자열포인터를이용한다 _tcslen( ) TCHAR 문자열의길이를구하는함수 14

3-2. TextOut( ) 이해 : 문자열정렬 (1/4) UINT SetTextAlign( HDC hdc, UINT fmode ); 1. Device Context 핸들 2. 문자열정렬플래그설정, 디폴트는 TA_TOP TA_LEFT ( 좌상단 ) 값 TA_TOP TA_BOTTOM TA_CENTER TA_LEFT TA_RIGHT TA_UPDATECP TA_NOUPDATECP 설명지정한좌표가상단지정한좌표가하단지정한좌표가수평중앙좌표지정한좌표가수평왼쪽지정한좌표가수평오른쪽지정한좌표가 CP(Current Position) 를사용하며문자열출력후에 CP를변경 CP를사용하지않고지정한좌표를사용하며, CP를변경하지않는다 TextOut(hDC, 100, 100, _T("Beautiful Korea"), 15 ); // 문자열정렬디폴트사용 이좌표가 (100, 100) Beautiful Korea TA_TOP TA_BOTTOM TA_LEFT TA_CENTER TA_RIGHT Beautiful Korea Current Position : 텍스트모드에서다음문자가출력될위치를커서가표시하듯이 그래픽모드에서는다음그래픽이출력될위치를 CP 라고한다. ( 다만깜빡이진않는다 ) 15

3-2. TextOut( ) 이해 : 문자열정렬 (2/4) TextOut3 프로젝트생성 16

3-2. TextOut : 문자열정렬 (4/4) TA_UPDATECP 플래그를사용하면출력위치를지정하는인수를무시하고, 항상 CP 의위치에문자열을출력, 출력후에 CP 를문자열의다음위치로옮긴다. SetTextAlign(hdc, TA_UPDATECP); 를첫번째 TextOut 뒤에위치시키면어떻게출력되는가? CP 와내가지정한좌표위치와관계가있는가? 17

3-2. DrawText: 긴문자열출력 (1/3) int DrawText( HDC hdc, LPCTSTR lpstring, int ncount, LPRECT lprect, UINT uformat ); 1. Device Context 핸들 // 윈도우즈에서사각영역정의에사용하는 RECT 구조체 typedef struct _RECT { LONG left; LONG top; LONG right; LONG bottom; } RECT; 2. 출력될문자포인터 3. 출력될문자열길이 -1 이면널종류문자열로간주 값 설명 DT_LEFT 수평왼쪽정렬한다. DT_RIGHT 수평오른쪽정렬한다. DT_CENTER 수평중앙정렬한다. DT_BOTTOM 사각영역의바닥에문자열을출력한다. DT_VCENTER 사각영역의수직중앙에문자열을출력한다. DT_WORDBREAK 사각영역의오른쪽끝에서자동개행되도록한다. DT_SINGLELINE 한줄로출력한다. DT_NOCLIP 4. 출력될사각영역 RECT 구조체포인터 5. 사각영역의경계를벗어나도문자열을자르지않고그대로출력한다. 18

3-2. DrawText: 긴문자열출력 (2/3) 주의 : 2010 이상버전에서수행하면에러발생. Visual 6 은아스키코드기준인데 2010 은유니코드환경이기때문이다. 19

DrawText 프로젝트생성 3-2. DrawText: 긴문자열출력 (3/3) _tcslen( ) TCHAR 문자열의길이를구하는함수 20

GraphOut 프로젝트생성 3-3. 그래픽출력 COLORREF SetPixel(hdc, nxpos, nypos, clrref) // 픽셀하나 DWORD MoveToEx(hdc, x, y, lppoint) // 선그리기위해이동 BOOL LineTo(hdc, xend, yend) // MoveToEx x,y위치부터 xend,yend까지선그리기 BOOL Rectangle(hdc, nleftrect, ntoprect, nrightrect, nbottomrect) BOOL Ellipse(hdc, nleftrect, ntoprect, nrightrect, nbottomrect) MoveToEx(hdc, A, B, NULL); LineTo(hdc, C, D); 21

3-3. 메시지박스 MessagBox 프로젝트생성 int MessageBox(HWND hwnd, LPCTSTR lptext, LPCTSTR lpcaption, UINT utype); 1. 메시지박스 Owner 윈도우 2. 메시지박스에출력할문자열 3. 메시지박스타이틀에출력할문자열 4. 어떤종류의버튼이나타날것인가 설명 MB_ABORTRETRYIGNORE Abort, Retry, Ignore 세개의버튼이나타난다. MB_OK OK버튼하나만나타난다. MB_OKCANCEL OK, Cancel 두개의버튼이나타난다. MB_RETRYCANCEL Retry, Cancel 두개의버튼이나타난다. MB_YESNO Yes, No 두개의버튼이나타난다. MB_YESNOCANCEL Yes, No, Cancel 세개의버튼이나타난다. 22