본문 바로가기

assortrock

(18)
Win32 API - 마우스 입력 1. 마우스 입력시 발생 메세지 마우스를 클릭하면 마우스가 클릭된 위치나 조랍키의 상태 등의 부가 정보가 메세지와 함께 프로시저로 전달된다. WndProc 의 매개변수 WPARAM과 LPARAM에 부가 정보가 담긴다. 이때 두 매개변수는 WORD의 구조체이다. 4byte 로 이루어져 있고, 상위 2bytes는 HIWORD, 하위 2bytes는 LOWORD이다. 마우스의 위치 정보는 LPARAM의 HIWORD에 Y좌표, LOWORD 에 X좌표가 담겨 윈도우 프로시저로 전달된다. wParam에는 마우스 버튼의 상태와 키보드 조합키의 상태가 전달된다. 상태값 들의 비트 연산을 통해 여러 개의 조합키가 눌려도 윈도우가 인식하고 옳바른 처리를 할 수 있다. 2. 곡선 그리기 마우스를 이용해 그림을 그리는 프로그램..
Win32 API - 키보드 입력 Win32 API 의 장점 중 하나는 멀티 태스킹 환경을 지원한다는 것. 입력이 들어오면 포커스(입력 초점)을 가진 프로그램에 키보드 메세지를 보내게 되고, 프로그램은 키보드 메세지를 받아 입력을 처리한다. -> 포커스를 가진 컨트롤만 키보드 입력을 받을 수 있고, 이와 관련한 메세지도 포커스를 가진 컨트롤에게만 전달. 포커스 : 입력 초점(입력이 들어올것 타이핑시 문자 입력 초점에 커서가 깜빡이는 것 등) 컨트롤 : 인터페이스를 통해 사용자로부터 명령과 입력을 받고 출력 결과를 보여주는 과정속 사용되는 입출력 도구(메세지 박스, 버튼 등 사용자와 상호작용하며 입출력하는 것) 1. 키보드 입력 TranslateMessage 함수를 통해 문자 정보를 확인해 WM_CHAR 메세지로 변환해서 DispatchM..
Win32 API - 메세지 박스 출력 1. WM_LBUTTON 메세지 왼쪽 마우스가 눌린( 떼거나 움직이는것은 다른 메세지) 경우 발생하는 메세지. WM_LBUTTON 메세지가 발생하면 MessageBoxW 함수를 통해 메게지 박스(팝업창)을 띄우게 하였다. 2. MessageBoxW() - hWnd : 메세지 박스의 부모 윈도우 ( -> 메세지 박스 (팝업창) 은 자식 윈도우 이다. ) - lpText : 메세지 박스 안에 출력할 문자열 - lpCaption : 메게지 박스 타이틀에 출력할 문자열 - uType : 메세지 박스의 종류 - 반환형 int : 이는 사용자가 어떤 버튼을 눌렀는지 인지해야 그에 맞는 대처를 할 수 있기 때문. 해당 반환값을 변수에 저장해 놓고 있다가 조건문 등을 활용해 그에 맞는 대처를 할 수 있다. 2-1 uT..
Win32 API - 도형 출력 - SetPixel : 화면에 점출력 - MoveToEx , LineTo : 선을 그을 때 사용하는 함수. MoveToEx로 CP(윈도우 창에서 그림을 그리기 위한 기준점 역할을 한다.)를 원하는지점에 이동시키고, LineTo 함수를 통해 원하는 좌표까지 선을 긋게 된다. - Rectangle : 사각형을 그린다. - Ellipse : 타원을 그린다. - 좌표가 겹칠 경우 후에 호출된 도형이 먼저 호출된 도형을 덮는다.
Win32 API - DC (Device Context) 1. Device Context 란 Win32 에서 출력을 위해 필요한 구조체. 해당 구조체는 출력에 필요한 모든 정보를 갖고 있는 데이터 구조체이다. 2. 윈도우는 기본적으로 세가지 동적 연결 라이브러리(Dynamic Linked Library)로 구성되어 있다. - Kernel : 메모리를 관리하고 프로그램을 실행한다. - User : 유저 인터페이스(UI)와 윈도우 관리 - GDI : Graphic Device Interface, 화면 처리와 그래칙 등 모든 출력 장치를 제어 3. GDI 와 디바이스 드라이버 덕분에 Windows API는 디바이스에 비의존적일 수 있다. - GDI : 모든 출력장치를 제어하는 인터페이스. - GDI 오브젝트 : 출력 장치를 제어하고 또한 출력하는 것 . 펜, 브러시..
Win32 API 배경 지식 - 핸들(Handle) 보호되어 있는 글입니다.
Win32 API 기본 이 글에서는 win32 api 기본.cpp의 문법들을 정리한다. 1. 전방 선언 파트 // 전역 변수 부분 1.1. HINSTANCE HINSTANCE를 ctrl + 더블 클릭하여 정의 하는 구문을 살펴보면 다음과 같다. DECLARE_HANDLE(HINSTANCE); 한번 더 ctrl + 더블 클릭 하면 #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name int unused라는 변수 하나를 가진 구조체가 나온다. -> HINSTANCE 자료형은 정수 변수 하나를 저장하기 위한 구조체 -> 윈도우는 여기에 id를 저장하고 사용자 는 이 id 를 활용하여 핸들링이 가능하다. 즉 HINSTANCE hI..
구조체를 이용하여 배열 구현 #pragma once // 구조체 선언 struct tag_myArray { int* elementDataPtr; // 배열의 주소(할당 받을 대상) intMaxCount; // 할당 받은 배열의 크기 int curCount; // 배열 속 존재하는 요소의 개수 }; // 초기화 함수 void InitialArray(tag_myArray* _target); // 데이터 입력 함수 void Push(tag_myArray* _target, int _data); // 배열 해제 함수 void ReleaseArray(tag_myArray* _target); #include #include // 구조체 선언 struct tag_myArray { int* elementDataPtr; // 배열의 주소(할당 받을 ..