- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
목록API (12)
드럼치는 프로그래머
WndProc 메시지 처리 함수란 메시지가 발생할 때 프로그램의 반응을 처리하는 일을 하며 WinMain 함수와는 별도로 WndProc이라는 이름으로 존재한다. 윈도우 프로시저(Window Procedure)라는 뜻이지만 통상 읽을 때는 "윈드프록"이라고 읽는다. WndProc은 WinMain에서 호출하는 것이 아니라 윈도우즈에 의해 호출된다. WinMain내의 메시지 루프는 메시지를 메시지 처리 함수로 보내주기만 할 뿐이며 WndProc은 메시지가 입력되면 윈도우즈에 의해 호출되어 메시지를 처리한다. 이렇게 운영체제에 의해 호출되는 응용 프로그램내의 함수를 콜백(CallBack) 함수라고 한다. WndProc의 인수는 모두 4개이며 MSG 구조체의 멤버 4개와 동일하다. hWnd는 메시지를 받을 윈도우..
윈도우즈를 메시지 구동 시스템(Message Driven System)이라고 하며 이 점이 도스와 가장 뚜렷한 대비를 이루는 윈도우즈의 특징이다. 도스에서는 프로그래머에 의해 미리 입력된 일련의 명령들을 순서대로 실행하는 순차적 실행방법을 사용한다. 윈도우즈는 이와 다르게 프로그램의 실행 순서가 명확하게 정해져 있지 않으며 상황에 따라 실행 순서가 달라지는 데 여기서 말하는 상황이란 바로 어떤 메시지가 주어졌는가를 말한다. 메시지란 사용자나 시스템 내부적인 동작에 의해 발생된 일체의 변화에 대한 정보를 말한다. 예를 들어 사용자가 마우스의 버튼을 눌렀다거나 키보드를 눌렀다거나 윈도우가 최소화되었다거나 하는 변화에 대한 정보들이 메시지이다. 메시지가 발생하면 프로그램에서는 메시지가 어떤 정보를 담고 있는가..
WinMain 함수에서 하는 가장 중요한 일은 윈도우를 만드는 일이다. 윈도우가 있어야 사용자로부터 입력을 받을 수 있고 출력을 보여줄 수도 있기 때문이다. 윈도우를 만드려면 윈도우 클래스를 먼저 등록한 후 CreateWindow 함수를 호출해야 한다. 모든 윈도우는 윈도우 클래스를 기반으로 하여 만들어지며 윈도우 클래스는 만들어질 윈도우의 여러가지 특성을 정의한다. 윈도우 클래스는 windows.h에 다음과 같이 정의되어 있는 구조체이다. typedef struct tagWNDCLASS { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRU..
핸들에 대한 이해 핸들(handle)이란 구체적인 어떤 대상에 붙여진 번호이며 문법적으로는 32비트의 정수값이다. 도스 프로그래밍에서는 거의 유일하게 파일 핸들만이 사용되었으며 그래서 도스에서 핸들은 곧 파일 핸들을 의미하는 경우가 많았다. 그러나 윈도우즈에서는 여러 가지 종류의 핸들이 사용되고 있다. 만들어진 윈도우에는 윈도우 핸들(hWnd)을 붙여 윈도우를 번호로 관리하며 아직은 잘 모르겠지만 DC에 대해서도 핸들을 사용하고 논리적 펜, 브러시에도 핸들을 붙여 관리한다. 심지어 메모리를 할당할 때도 할당한 메모리의 번지를 취급하기보다는 메모리에 번호를 붙인 메모리 핸들을 사용한다. 왜 이렇게 핸들을 자주 사용하는가 하면 대상끼리의 구분을 위해서는 문자열보다 정수를 사용하는 것이 훨씬 더 속도가 빠르기..
윈도우즈의 장점 윈도우즈는 많은 장점들을 가지고 있다. 물론 장점과 단점은 상대적인 개념이기 때문에 어디에 비교를 하느냐에 따라 장점이 단점이 될 수도 있겠지만 윈도우즈 이전의 운영체제인 도스에 비한다면 윈도우즈는 엄청난 특장점을 많이 가지고 있으며 이런 장점들은 프로그램을 사용하는 유저에게는 물론이고 개발자들에게도 많은 편리를 가져다 주었다. 1.그래픽 기반의 운영체제이다. 화면 처리를 문자 단위로 하는 것이 아니라 디지탈 표현의 최소단위인 픽셀(Pixel)로 처리함으로써 섬세한 화면 처리가 가능하다. 그래서 사용자는 무엇보다 친숙하고 예쁜 화면을 대하게 되었으며 훨씬 더 쉽게 프로그램을 사용할 수 있게 되었다. 뿐만 아니라 프로그래머에게도 무한한 표현의 자유를 준다. 2.멀티 태스킹이 가능하다. 한번..
이 강좌는 API 입문자를 위해 마련된 것입니다. 제가 출판을 목적으로 95년부터 틈틈이 작성한 글의 일부분이며 2001년 5월 가남사에서 "Windows API 정복"이라는 제목으로 출판되었습니다. 이 책은 총 40개의 장으로 구성되어 있으며 Win32 API에 관한 대부분의 내용을 다 포함하고 있습니다. 총 3부로 구성된 책 내용중 입문 코스에 해당되는 1부의 원고는 웹 사이트에 공개하여 누구나 읽을 수 있도록 하였습니다. 여러 초보들을 대상으로 베타 테스트까지 거쳤으며 가장 간결한 예제로 윈도우즈 프로그래밍에 쉽게 입문할 수 있도록 해 줍니다. 이 강좌를 읽는데는 특별한 준비가 필요없습니다. 단 API가 C언어에 기반하므로 C언어에 대해서는 어느정도의 기본 지식을 갖추고 있어야 합니다. 변수, 루프..
GDI(Graphic Device Interface)는 선 그리기, 컬러 관리와 같은 그래픽 함수들을 구현하는 일을 담당하는 윈도우즈의 구성요소로 디스플레이, 프린터, 기타 장치에 대한 그래픽 출력을 위하여 응용 프로그램이 사용할 수 있는 함수와 그에 관련된 구조를 제공한다. 이를 이용하여 직선, 곡선, 다각형, 텍스트, 비트맵(bitmap) 이미지를 구현할 수 있다. GDI와 관련된 파일은 윈도우즈의 시스템 폴더 밑에 있는 "GDI32.DLL"파일이다. GDI32.DLL에는 GDI관련 함수들과 객체들 이 정의되어 있다. 다음은 GDI함수를 이용하여 출력하는 과정이다. GDI32.DLL -> 디바이스 드라이버 -> 프린터, 화면 등 윈도우즈는 잘 알고 있는 것처럼 매우 강력한 그래픽 기능을 제공한다. 화..
그래픽 - DC [GDI 오브젝트] GDI(Graphic Device Interface)란 그래픽에 출력에 사용되는 도구를 말하며 펜. 브러시. 비트맵. 폰트 모두 GDI 오브젝트이다. 펜 HPEN 선을 그을때 사용한다. 브러시 HBRUSH 면을 채울때 사용한다. 폰트 HFONT 문자 출력에 사용되는 글꼴. 비트맵 HBITMAP 비트맵 이미지 팔레트 HPALETTE 팔레트 영역 HRGN 영역 [스톡 오브젝트] StockObject 는 윈도우가 기본적으로 제공해주는 GDI 오브젝트를 말한다. HDGIOJ GetStockObject( int fnObject ) ; * fnObject BLACK_BRUSH 검정색 브러시 GRAY_BRUSH 회색 브러시 NULL_BRUSH 투명 브러시 WHITE_BRUSH 흰색..
Sndplaysound는 간단하고 사용법도 쉬워서 많이 쓰십니다.. 아닌가? 나만 쓰나? Sndplaysound를 쓸 때에 모듈에 Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long 'lpszSoundName는 사운드 경로입니다. uFlags는 사운드를 재생시킬 때의 모드입니다. 쓰고 폼에 사운드이벤트를 발생시킬 부분에(모르시는 분들을 위하여 Sndplaysound의 사용법 : sndPlaySound [사운드경로],[재생모드]) sndPlaySound App.Path + "\예제.WAV", &O1 간단하게 요렇게 ..
HINSTANCE 핸들은 보통 실행되고 있는 Win32 프로그램이 메모리 상에 올라가 있는 시작 주소 값을 갖고 잇습니다. 보통은 0x00400000 이런식의 값을 가지고 있는데 저 값의 메모리 주소에 실행 모듈이 올라가 잇다는 것을 의미 하겠죠. 보통 리소스들을 로드 하는 함수들에서 이 핸들 값을 많이 참조하게 되는데 이 이유는 메모리 상에 올라가 있는 실행 모듈 들중 (exe, dll 등등.. ) hInstance 가 가르키는 주소에 올라가 있는 실행 모듈에서 그 리소스를 읽어 오라고 지정 해주는 것입니다. 이 외에 GetProcAddress() 같이 다른 DLL 에서 함수 주소를 얻어야 하는 경우에도 HMODULE ( Win32 에선 HINSTANCE 와 동일한 기능을 하고 같은 값이라고 보시면 됩..