番外編
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); //デフォルトのプロシージャ
}
通報 ...