Windows マシン用の GUI プログラムを C 言語で書く、という勉強を始めたのでその軌跡を残しておきます。
主に 標準 Windows API さんを参考にしています。 今回は 標準 Windows API さんの 1. ~ 8. までの内容を踏まえて、Window Class を登録し、Window を生成するコードを作成しました。
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
HWND hwnd;
WNDCLASS winc;
// Window Class の設定
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = DefWindowProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL, IDC_ARROW);
winc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("TEST_WINDOW");
// Window Class の登録
if(!RegisterClass(&winc)) {
return 0; // 失敗時終了
}
// Window の生成
hwnd = CreateWindow(
TEXT("TEST_WINDOW"), TEXT("test window!"), WS_OVERLAPPEDWINDOW,
100, 100, 200, 200, NULL, NULL, hInstance, NULL
);
if(hwnd == NULL){
return 0; // 失敗時終了
}
ShowWindow(hwnd, SW_SHOW);
MessageBox(NULL, TEXT("test window を生成しました. "), TEXT("information"), MB_ICONINFORMATION);
return 0;
}