#include <Windows.h>
1.인스턴스(메모리 상에 할당되어 실행중인 프로그램)
HINSTANCE _hInstance;
2.윈도우 핸들
HWND _hWnd;
3.클래스 이름
LPCTSTR _lpszClass = TEXT("나태함이 느껴진다");
4.함수의 프로토 타입 선언
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
5.메인함수
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdParam, int cmdShow)
{
_hInstance = hInstance;
6.윈도우 메세지 구조체
MSG message;
7.윈도우 클래스 구조체
WNDCLASS wndClass;
wndClass.cbClsExtra = 0; 8.클래스 여분 메모리
wndClass.cbWndExtra = 0; 9.윈도우 여분 메모리
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 10.윈도우 바탕색
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); 11.윈도우 커서모양
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); 12.아이콘 모양
wndClass.hInstance = hInstance; 13.인스턴스 부여
wndClass.lpfnWndProc = (WNDPROC)WndProc; 14.프로시저 설정
wndClass.lpszClassName = _lpszClass; 15.클래스 이름
wndClass.lpszMenuName = NULL; 16. 메뉴 이름
wndClass.style = CS_HREDRAW | CS_VREDRAW; 17.클래스 스타일
//윈도우를 위에 설정한 정보를 토대로 등록해준다
RegisterClass(&wndClass);
_hWnd = CreateWindow(
_lpszClass, 16.클래스 이름
_lpszClass, 17.윈도우 이름
WS_OVERLAPPEDWINDOW, 18.윈도우 창 모양
50, 19.시작좌표 X (left)
50, 20.시작좌표 Y (top)
800, 21.윈도우 창 가로크기
600, 22.윈도우 창 세로크기
NULL, 23.부모 윈도우의 핸들
(HMENU)NULL, 24.메뉴 또는 자식 윈도우의 핸들
hInstance, 25.에플리케이션 인스턴스 핸들
NULL); 26.윈도우 생성 데이터의 주소
23.실제로 윈도우 창을 우리 눈에 보이게 해주는 함수
ShowWindow(_hWnd, cmdShow);
24.GetMessage vs PeekMessage
25.겟메세지는 윈도우에서 처리해달라는 메세지가 넘어올때 동작하고
26.픽메세지는 메세지가 있든 없든 계속해서 동작하고 있다.
while (GetMessage(&message, 0, 0, 0)) 27.큐로부터 메시지를 받아와 메시지를 윈도우 프로시저로 보냄
{
TranslateMessage(&message); 28.키보드 입력 메시지를 프로그램에서 쉽게 사용가능하게 해줌
DispatchMessage(&message); 29.큐에서 꺼낸 메시지를 메시지 처리함수로 보냄
}
return message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps; 30. < -- PAINTSTRUCT 찾아보기
HDC hdc; 31. 핸들러 디바이스 컨텍스트, DC를 사용하게 해주는 도구
31-1. DC => 디바이스 컨텍스트, 출력을 위한 데이터를 가지는 구조체
switch (iMessage)
{
case WM_PAINT: 32. 출력 메시지가 온 경우
{
hdc = BeginPaint(hWnd, &ps); 30.화면에 대한 DC(디바이스 콘텍스트) 획득
EndPaint(hWnd, &ps); 33. BeginPaint로 획득한 DC 해제
}
break;
case WM_DESTROY: 34. 프로그램 종료 메시지가 온 경우
PostQuitMessage(0);
return 0;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam));
}
35. 좌표는 10시방향 모서리 ,TL(top letf) 방향이 좌표 0,0
36. 오른쪽으로 갈수록 x++ 아래로 내려갈수록 y++
'C++ 2D' 카테고리의 다른 글
7. 시간과 입력 (0) | 2021.05.31 |
---|---|
6. 싱글 톤 패턴 (0) | 2021.05.31 |
5. 마우스 (0) | 2021.05.28 |
3.Rect, WM, VK, InvalidateRect(,,) (0) | 2021.05.26 |
2. 텍스트 및 도형 출력 (0) | 2021.05.26 |