67 lines
1.6 KiB
C
67 lines
1.6 KiB
C
|
|
#pragma once
|
|||
|
|
#include "../global/Base.h"
|
|||
|
|
#include"../myinput/Input.h"
|
|||
|
|
#include<Windows.h>
|
|||
|
|
#include <chrono>
|
|||
|
|
#include <thread>
|
|||
|
|
|
|||
|
|
class Window {
|
|||
|
|
public:
|
|||
|
|
Window(Input& p_input);
|
|||
|
|
~Window();
|
|||
|
|
|
|||
|
|
//ע<>ᴰ<EFBFBD><E1B4B0><EFBFBD>࣬<EFBFBD><E0A3AC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD><E5A3AC>ʾ
|
|||
|
|
bool initWindow(HINSTANCE hInstance, const uint32_t& width = 800, const uint32_t& height = 600);
|
|||
|
|
|
|||
|
|
//<2F>й<EFBFBD><D0B9><EFBFBD>wndProc<6F><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><D2BD>д<EFBFBD><D0B4><EFBFBD>
|
|||
|
|
void handleMessage(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
|||
|
|
|
|||
|
|
//ÿһ֡/ÿһ<C3BF><D2BB>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
void peekMessage();
|
|||
|
|
|
|||
|
|
void swapBuffer();
|
|||
|
|
|
|||
|
|
uint32_t getWidth() const { return mWidth; }
|
|||
|
|
uint32_t getHeight() const { return mHeight; }
|
|||
|
|
void* getCanvas() const { return mCanvasBuffer; }
|
|||
|
|
bool shouldClose() { return !mAlive; }
|
|||
|
|
|
|||
|
|
void Test(int p_time){
|
|||
|
|
swapBuffer();
|
|||
|
|
std::this_thread::sleep_for(std::chrono::microseconds(p_time));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Update() {
|
|||
|
|
POINT cursorPos;
|
|||
|
|
if (GetCursorPos(&cursorPos)) {
|
|||
|
|
m_input.HandelMouseInput(cursorPos.x, cursorPos.y);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
private:
|
|||
|
|
BOOL createWindow(HINSTANCE hInstance);
|
|||
|
|
ATOM registerWindowClass(HINSTANCE hInstance);
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
static Window* currentWindow; //<2F><>ǰ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
//Ϊtrue<75><65>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD>
|
|||
|
|
//Ϊfalse<73><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>رգ<D8B1><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD>
|
|||
|
|
bool mAlive{ true };
|
|||
|
|
|
|||
|
|
HINSTANCE mWindowInst;
|
|||
|
|
WCHAR mWindowClassName[100] = L"AppWindow";
|
|||
|
|
HWND mHwnd;
|
|||
|
|
|
|||
|
|
int mWidth = 800;
|
|||
|
|
int mHeight = 600;
|
|||
|
|
|
|||
|
|
HDC mhDC; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dc
|
|||
|
|
HDC mCanvasDC; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mhDC<44><43><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5>ͼ<EFBFBD>õ<EFBFBD>dc
|
|||
|
|
HBITMAP mhBmp; //mCanvasDC<44>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ɵ<EFBFBD>bitmap
|
|||
|
|
void* mCanvasBuffer{ nullptr }; //mhBmp<6D><70>Ӧ<EFBFBD><D3A6><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ʼλ<CABC><CEBB>ָ<EFBFBD><D6B8>
|
|||
|
|
|
|||
|
|
Input& m_input;
|
|||
|
|
};
|