#include <windows.h>
#include <iostream>
// グローバル変数
HWND g_hWnd;
bool g_running = true;
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_DESTROY: {
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
int main() {
HINSTANCE hInstance = GetModuleHandle(NULL);
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.lpszClassName = L"WindowClass";
RegisterClass(&wc);
g_hWnd = CreateWindowEx(0, L"WindowClass", L"Interactive Window", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 400, 200, NULL, NULL, hInstance, NULL);
ShowWindow(g_hWnd, SW_SHOW);
MSG msg;
while (g_running) {
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT) {
g_running = false;
}
else {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else {
// ここにメインの処理を記述する
// 例えば、キー入力をチェックしてescキーが押されたら g_running を false に設定する
if (GetAsyncKeyState(VK_ESCAPE) & 0x8000) {
g_running = false;
}
if (GetAsyncKeyState(VK_UP) & 0x8000) {
std::cout << "やっほー"<< std::endl;
}
// ここに追加の処理を記述する
// この例では、何か重要な処理を行っていると仮定し、その結果を表示する
//std::cout << "Processing..." << std::endl;
// 少し待機する(適切なウェイト処理を行うことが望ましい)
Sleep(100);
}
}
// プログラムの終了処理などを行う
return 0;
}