전체 글 219

[강의] 1월 21일 수업정리

오늘은 비트마스크를 이용한 마우스 X, Y값 출력과 API를 클래스화 시키는 부분에 대한 수업을 들었다. 1. 비트마스크를 이용한 마우스 X, Y값 출력LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ static int nPosX{}; static int nPosY{}; switch (message) { case WM_MOUSEMOVE: { nPosX = lParam & 0x0000ffff; nPosY = (lParam & 0xffff0000) >> 16; InvalidateRect(hWnd, nullptr, true); break; } case WM_KEYDOWN: { if (wP..

C++ 2025.01.21

[강의] 1월 20일 수업정리

오늘은 비트마스크에 대한 수업을 들었다. 1. 비트 마스크 정의 :비트마스크는 이진수를 사용하는 컴퓨터의 연산 방식을 이용해, 정수의 이진수 표현을 자료 구조로 쓰는 기법을 말한다.비트마스크를 통해 집합을 정수로 나타낼 수 있으며, 비트 1이면 켜져있다. 0이면 꺼져있다 라고 말한다.단, 이때 집합에 저장할 수 있는 수의 범위가 정해져 있어야 한다. 따라서 보통 0부터 N - 1까지 N개의 정수로 이루어진 집합을 나태낼 때 사용한다.즉, 2진수 기준으로 1은 구멍, 0은 벽으로 생각했을 때 특정 마스크를 씌웠을 때 원하는 값만 볼수 있게끔 하는 것이 비트 마스크이다. [ 통과 되는 부분 : 1, 통과 되지 않는 부분 : 0 ]1bytes == 8bit == 11111111( 8bit 2진수 ) ==  2..

C++ 2025.01.20

[강의] 1월 16일 수업정리

API에 대한 마지막 수업을 들었다. 메시지 루프HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINDOWSPROJECT1));MSG msg;while (GetMessage(&msg, nullptr, 0, 0)){ if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); }}  GetMessage 메시지 큐에서 메시지를 하나씩 가져온다 ( 메시지 큐에 데이터 입력이 들어가면 루프가 돌면서 메시지를 하나씩 꺼내서 처리함 )메시지가 들어오지 않으면 대기 상태로 진..

C++ 2025.01.16

[강의] 1월 15일 수업정리

오늘도 API에 대한 수업을 들었다.  1. ATOM 및 MyRegisterClassATOM: 16비트 크기의 정수 값으로, 특정 데이터를 고유하게 식별할 수 있는 ID로 사용. 문자열을 고유 ID로 변환 가능MyRegisterClass 함수: 애플리케이션의 윈도우 클래스 정보를 등록ATOM MyRegisterClass(HINSTANCE hInstance){ WNDCLASSEXW wcex; // 윈도우 클래스 구조체 선언. wcex.cbSize = sizeof(WNDCLASSEX); // 구조체 크기를 설정. RegisterClassExW에서 구조체를 읽기 위해 필요. wcex.style = CS_HREDRAW | CS_VREDRAW; // 윈도우 스타일 지정. // ..

C++ 2025.01.16

[강의] 1월 13일 수업정리

오늘은 API에 대한 수업을 들었다. 1. API1.1 설명 API(Application Program Interface)란 응용 프로그램에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어하거나 상호작용할 수 있도록 설계된 인터페이스이다.일반적으로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.Application Program (응용 프로그램) + Interface (인터페이스)를 조합한 개념으로, 쉽게 말해 프로그램 간 연결 역할을 한다.1.2 코드 설명 #include "framework.h"#include "WindowsProject1.h"#define MAX_LOADSTRING 100HINSTANCE hInst; ..

C++ 2025.01.13

[강의] 1월 3일 수업정리

오늘은 커맨드 패턴에 대한 수업을 들었다. 1. 커맨드 패턴 (Command pattern)1.1 정의 커맨드 패턴이란 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다1.2 설명커맨드 패턴에는 명령(command), 수신자(receiver), 발동자(invoker), 클라이언트(client)의 네개의 용어가 항상 따른다. 커맨드 객체는 수신자 객체를 가지고 있으며, 수신자의 메서드를 호출하고, 이에 수신자는 자신에게 정의된 메서드를 수행한다. 커맨드 객체는 별도로 발동자 객체에 전달되어 명령을 발동하게 한다. 발동자 객체는 필요에 따라 명령 발동에 대한 기록을 남길 수 있다. 한..

C++ 2025.01.03

[강의] 1월 2일 수업정리

오늘은 옵저버 패턴에 대한 수업을 들었다.1. 옵저버 패턴 1.1 정의 옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 1.2 특징1. 주제가 옵저버에 대해서 아는것은 옵저버가 특정 인터페이스를 구현한다는 것 뿐이다.2. 옵저버는 언제든지 새로 추가할수있다3. 새로운 형식의 옵저버를 추가하려고 할때도 주제를 전혀 변경할 필요가 없다4. 주제와 옵저버는 서로 독립적으로 재사용할수있다.5. 주제나 옵저버가 바뀌더라도 서로한테 영향을 미치지 않는다. 즉, 여기서 핵심은 내용이 변경되었을 때 알려준다 이며 보통 게임쪽에서 UI에..

C++ 2025.01.02

[강의] 12월 31일 수업정리

오늘은 (추상) 팩토리 패턴에 대한 수업을 들었다. 1. 팩토리 패턴 1.1 정의 :객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만든다. 즉 팩토리 메소드 패턴을 이용하 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것.1.2 UMLProduct - 생성될 객체의 인터페이스ConcreteProduct - Product 인터페이스를 구현한 구상 클래스Creator - 객체를 생성하는 팩토리 메소드를 가진 인터페이스ConcreteCreator - Creator 인터페이스를 구현한 구상 클래스 1.3 구현product .h / cpp#pragma once#include __interface I_PRODUCT{ void operation();};..

C++ 2024.12.31