プログラミング言語

Hello Worldプログラム / 16

16 コメント
views
0 フォロー
16
とくに 2020/07/03 (金) 18:12:45 修正

番外編
Windowsのデスクトップアプリケーション版(C++言語というかほぼC)

#include <Windows.h>
#include <tchar.h>

//ウィンドウプロシージャを宣言
LRESULT CALLBACK WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

//エントリポイント
int WINAPI WinMain(_In_ HINSTANCE hInst,_In_opt_ HINSTANCE provInst,_In_ PSTR lpCmdLine,_In_ int nCmdShow){
	//ウィンドウクラスの定義
	WNDCLASSEX wndClass;

	wndClass.cbSize = sizeof(WNDCLASSEX);
	wndClass.style = CS_HREDRAW | CS_VREDRAW;
	wndClass.lpfnWndProc = WinProc;
	wndClass.cbClsExtra = 0;
	wndClass.cbWndExtra = 0;
	wndClass.hInstance = hInst;
	wndClass.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
	wndClass.hCursor = LoadCursor(nullptr, IDC_ARROW);
	wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
	wndClass.lpszMenuName = nullptr;
	wndClass.lpszClassName = _T("window_hello");
	wndClass.hIconSm = LoadIcon(nullptr, IDI_APPLICATION);

	//ウィンドウクラスを登録
	if (RegisterClassEx(&wndClass) == 0){
		return 1;
	}

	//ウィンドウを作成
	HWND hWnd = CreateWindow(wndClass.lpszClassName, _T("ウィンドウ"), WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, nullptr, nullptr, hInst, nullptr);

	if (hWnd == nullptr){
		return 1;
	}

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	//メッセージループ
	MSG msg;
	while (GetMessage(&msg, nullptr, 0, 0)){
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return (int)msg.wParam;
}

//ウィンドウプロシージャ
LRESULT CALLBACK WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
	static LPCTSTR msgText = _T("Hello,World!");

	switch (msg){
	case WM_PAINT: //ウィンドウの描画
	{
		PAINTSTRUCT ps;
		HDC hdc = BeginPaint(hWnd, &ps);
		TextOut(hdc, 20, 20, msgText, lstrlen(msgText));
		EndPaint(hWnd, &ps);
		break;
	}
	case WM_DESTROY: //ウィンドウが破棄される
		PostQuitMessage(0); //メッセージループを終了させる
		break;
	}
	return DefWindowProc(hWnd, msg, wParam, lParam); //デフォルトのプロシージャ
}
通報 ...