Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 싱글턴
- 모던C++디자인패턴
- 흐름식 빌더
- 브릿지 패턴
- 그루비 스타일 빌더
- 추상 팩터리
- 싱글톤 패턴
- 디자인패턴
- 프로토타입 패턴
- 컴포지트 패턴
- 컴포지트 빌더
- 디자인 패턴
- 팩터리 메서드
- 브릿지
- 함수형 팩터리
- 프로토타입
- 빌더 패턴
- 내부 팩터리
- 컴포지트
- 팩터리
- 데커레이터
- 팩터리 패턴
- 동적 데코레이터
- 데커레이터 패턴
- 빌더
- 프로토타입 중복처리
- 단순한 빌더
- 동적 데커레이터
- 싱글턴 패턴
- 싱글톤
Archives
- Today
- Total
GGym's Practice Notes
DirectX 쓰기 전 WinAPI 준비 본문
Device 생성 (헤더파일, cpp파일)
Device.h
#pragma once
// Function
void InitWindow(HINSTANCE hInstance, int nCmdShow);
void Destroy();
WPARAM Running();
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
// Scene
void InitScene();
void DestroyScene();
void Update();
void Render();
Device.cpp
#include "stdafx.h"
#include "Device.h"
int APIENTRY WinMain
(
HINSTANCE hInstance,
HINSTANCE prevInstance,
LPSTR lPCmdLine,
int nCmdShow
){
InitWindow(hInstance, nCmdShow); // 윈도우 초기화
Running();
Destroy();
return 0;
}
// extern 전역 변수
UINT Width = 800;
UINT Height = 600;
HWND Hwnd = NULL;
wstring Title = L"D2D";
IDXGISwapChain* SwapChain = NULL;
ID3D11Device* Device = NULL;
ID3D11DeviceContext* DeviceContext = NULL;
ID3D11RenderTargetView* RTV = NULL;
void InitWindow(HINSTANCE hInstance, int nCmdShow) {
// Register Wnd Class
{
WNDCLASSEX wc; // 윈도우 클래스 생성
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW; // 수직, 수평크기 변할시 다시 그림
wc.lpfnWndProc = WndProc; // 윈도우 메세지 처리함수 지정
wc.cbClsExtra = NULL; // 예약 영역
wc.cbWndExtra = NULL;
wc.hInstance = hInstance; // 응용 프로그램 인스턴스
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // 최소화 되었을때 출력될 아이콘
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // 사용할 마우스 커서
wc.hbrBackground = static_cast<HBRUSH>(WHITE_BRUSH); // 배경색상 브러시 지정
wc.lpszMenuName = NULL; // 프로그램이 사용할 메뉴 지정
wc.lpszClassName = Title.c_str(); //윈도우 클래스 이름
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
WORD check = RegisterClassEx(&wc);
assert(check != NULL);
}
// Create Window & Show Window
{
Hwnd = CreateWindowEx( // 윈도우 생성
NULL,
Title.c_str(), // 타이틀 클래스 이름
Title.c_str(), // 타이틀 바 이름
WS_OVERLAPPEDWINDOW, // 윈도우 스타일
CW_USEDEFAULT, // 생성될 좌표 x
CW_USEDEFAULT, // 생성될 좌표 y
Width, // 너비 크기
Height, // 높이 크기
NULL, // 소유주 핸들 지정
NULL, // 메뉴의 핸들 지정
hInstance, // 인스턴스 핸들 지정
NULL // lParam으로 전달될 구조체의 포인터
);
assert(Hwnd != NULL);
}
ShowWindow(Hwnd, nCmdShow);
UpdateWindow(Hwnd);
}
void Destroy() {
}
WPARAM Running() {
MSG msg;
ZeroMemory(&msg, sizeof(MSG));
InitScene();
while (true) {
// 메세지가 들어와 있는지 검사 후 리턴
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT) break;
TranslateMessage(&msg); // 해석
DispatchMessage(&msg); // 보고
}
else {
Update();
Render();
}
}
DestroyScene();
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
실제 코드작성은 Main에서 이루어진다.
Main.cpp
#include "stdafx.h"
#include "Systems/Device.h"
void InitScene() {
}
void DestroyScene() {
}
void Update() {
}
void Render() {
}
'DirectX' 카테고리의 다른 글
DirectX 12을 시작하기 전에 알아야 할 기본 지식 (1) | 2022.12.24 |
---|---|
DirectX 초기화 / 삼각형 그리기 (0) | 2020.08.13 |
DirectX Setup / stdafx.h 구성하기 (0) | 2020.08.12 |