開発環境 Microsoft Visual Studio Community 2019 / Visual C++
実行環境 Microsoft Windows 10 Home (64bit)
プロジェクト テンプレート Windows デスクトップ ウィザード
プロジェクト名 HelloWin
アプリケーションの種類 デスクトップ アプリケーション (.exe)
追加のオプション 空のプロジェクト

HelloWin.cpp
#include <Windows.h>
 
#define APP_NAME L"HelloWin"
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void OnPaint(HWND hWnd);
 
int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE, _In_ LPWSTR, _In_ int nCmdShow)
{
	// ウィンドウクラスの登録
	WNDCLASSEX wc = { sizeof WNDCLASSEX };
	wc.style = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc = WndProc;
	wc.hInstance = hInstance;
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1);
	wc.lpszClassName = APP_NAME;
	if (RegisterClassEx(&wc) == 0) {
		return 0;
	}
 
	// ウィンドウの作成
	HWND hWnd = CreateWindow(
		APP_NAME, APP_NAME,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 0,
		CW_USEDEFAULT, 0,
		NULL, NULL, hInstance, NULL);
	if (hWnd == NULL) {
		return 0;
	}
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
 
	// メッセージループ
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg) {
	case WM_PAINT:
		OnPaint(hWnd);
		break;
 
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
 
	default:
		return DefWindowProc(hWnd, uMsg, wParam, lParam);
	}
	return 0;
}
 
void OnPaint(HWND hWnd)
{
	LPCWSTR pStr = L"hello, world";
	PAINTSTRUCT ps;
	HDC hdc = BeginPaint(hWnd, &ps);
 
	TextOut(hdc, 0, 0, pStr, lstrlen(pStr));
 
	EndPaint(hWnd, &ps);
}
 
最終更新:2019年09月02日 16:48