728x90
Device.cpp = Main() 함수가 있는 실행 클래스 (이름 마음에 안들면 알아서 변경)
1. 클래스 헤더 생성

Device.cpp : Main() 함수가 있는 클래스
Device.h : 전방 함수 선언 및 전역 변수용
Global.h : 다른 클래스, 헤더에서 사용할 각종 헤더용 정의
2. Global.h 정의
#pragma once #include <Windows.h> // 각종 Window 함수 정의 #include <assert.h> // 검사용 //Global const UINT Width = 800; // 화면의 가로길이 const UINT Height = 600; // 화면의 세로길이
3. Device.h 정의
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
전방 선언용 으로 작성, 해당 함수가 WinMain() 함수 보다 아래에 작성 하기 때문
4. Device.cpp 정의
#include "Global.h" #include "Device.h"
include 관련
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE prevInstance, LPSTR lPCmdLine, int nCmdShow) { // 1. 윈도우 클래스 구조체 생성 & 정의 WNDCLASSEX wc; { wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WindowProc; wc.cbClsExtra = NULL; wc.cbWndExtra = NULL; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)WHITE_BRUSH; wc.lpszMenuName = NULL; wc.lpszClassName = "WIN32"; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); WORD check = RegisterClassEx(&wc); assert(check != NULL); } // 2. 윈도우 셋팅 HWND hwnd = CreateWindow( "WIN32", "Window API 32", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, Width, Height, NULL, NULL, hInstance, NULL ); assert(hwnd != NULL); // 3. 윈도우 출력 ShowWindow(hwnd, nCmdShow); // WM_PAINT와 관련 UpdateWindow(hwnd); // 4. 메시지 루프 MSG msg; ZeroMemory(&msg, sizeof(MSG)); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); // 문자 & 키입력 관련 (키보드 관련) DispatchMessage(&msg); // WindowProc에 전달 } return 0; }
2장에서 적어 놨듯이 1 ~3까진 윈도우 클래스 관련 생성 & 정의 하고 실제 동작은 4. 메시지 루프를 통해서 WindowProc() 함수를 호출
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // uMsg 안에는 키보드, 마우스 값들이 존재 switch (uMsg) { //화면에 그리기 최초 UpdateWindow()함수에 의해 발생 case WM_PAINT: { } break; //위도우가 화면에 사라지면 보내는 메시지 case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, uMsg, wParam, lParam); }
메시지루프 에서 msg에 값이 들어오면 자동으로 호출 되는 CALLBACK 함수
실행

'c, git, 컴퓨터 > Win32api' 카테고리의 다른 글
4. Resource (0) | 2022.09.26 |
---|---|
2. WinMain 구조 (0) | 2022.09.20 |
1. 프로젝트 생성&설정 (0) | 2022.09.20 |