본문 바로가기

Programming Study/Win32 API

입력_마우스 MOUSE 윈도우즈와 같은 GUI운영체제에서는 키보드보다 마우스가 더 많이 사용된다. 키보드 입력 처리를 메시지로 하는 것과 마찬가지로 마우스 입력 처리도 메시지를 받아 처리한다. 마우스 입력에 관한 메시지는 다음과 같은 종류가 있다. 마우스 메시지는 lParam의 상위 워드에 마우스 버튼이 눌러진 y좌표, 하위 워드에 x좌표를 가지며 좌표값을 검출해 내기 위해 HIWORD, LOWORD 등의 매크로 함수를 사용한다. 즉 마우스 메시지가 발생한 위치의 좌표는 (LOWORD(lParam),HIWORD(lParam))이 된다. 단, 좌표값은 당연히 영수지만 음수가 되는 특별한 경우도 있음을 주의해야 한다. 음수 좌표가 전달되는 경우에는 (int)(short)형으로 다시 한번 더 캐스팅하여 부호를 제대로 변환.. 더보기
입력_키보드 키보드 WM_CHAR 메시지 윈도우즈 환경에서는 명시적인 입력 함수가 존재하지 않으며 반드시 메시지를 받아야 한다. 왜냐하면 여러 개의 프로그램이 동시에 실행되는 멀티 태스킹 환경이며 사용자가 언제 자신에게 관심을 가질지 예측할 수 없기 때문이다. 윈도우즈 환경에서는 주로 마우스가 많이 사용되지만 아직까지도 컴퓨터의 가장 기본적인 입력장치는 키보드이다. 키보드로부터 입력이 발생했을 경우 윈도우즈 포커스를 가진 프로그램에게 키보드 메시지(WM_CHAR, WM_KEYDOWN)를 보내며 프로그램은 이런 메시지를 받아 키보드 입력을 처리한다. 여기서 포커스(Focus)란 입력 초점이라는 뜻이며 키보드 입력을 받아 들일 수 있는 상태라는 뜻이다. 포커스를 가진 상태란 활성화되어 있고 현재 사용자가 쓰고 있다는 뜻.. 더보기
출력 DC(Device Context) DC란 출력에 필요한 모든 정보를 가지는 데이터 구조체이며, GDI 모듈에 의해 관리 된다. DC를 얻는 방법 1. GetDC 함수를 사용하여 DC를 얻고 사용 후 ReleaseDC로 해제. HDC GetDC(HWND hWnd); int ReleaseDC(HWND hWnd, HDC hDC); 2. WM_PAINT 메시지 루틴에서만 사용할 수 있는 방법 BeginPaint 함수로 얻고 EndPaint 함수로 해제. HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint); BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint); 문자열의 출력 1. TextOut BOOL TextOut(HDC hdc in.. 더보기
윈도우즈 프로그래밍 한번 알아보기 아래 소스 프로그램은 윈도우즈 API를 통해 만들어진 예제 소스이다. 아무 하는 일 없이 만든 후 종료되는 그런 프로그램이다. #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass=TEXT("First"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpszCmdParam, int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst = hInstance; WndClass.cbClsExtra = 0; WndClass.cbWndExtra =.. 더보기
윈도우즈 프로그래밍 도스 또는 콘솔 환경과 윈도우즈의 차이점 및 특징 1. 그래픽 기반(GUI)의운영체제이다. 2. 멀티 태스킹이 가능하다. 3. 메시지 구동 시스템이다. 4. 장치에 독립적이다. 5. 일관성이 있다. 6. 리소스가 분리되어 있다. API란 - Application Programming Interface의 약자이며, 우리말로 풀어본다면 "운영체제가 응용 프로그램을 위해 제공하는 함수의 집합"이라고 정의 할 수 있다. - API는 특정 시스템을 프로그래밍 하기 위한 함수 집합을 이르는 일반 명사. - 그중 하나가 윈도우즈 API이나 요즘은 일반적으로 API라고 하면 윈도우즈 API를 말하는 경우가 많다. - API와 비슷한 말로 SDK(Software Development Kit)라는 표현이 사용되기도 한다... 더보기