Windows Program の骨子 †まず、非常に簡単な Window program を作ってみよう。 以下のファイルを myapp01.cpp として保存するものとする。 #include <windows.h> #include <tchar.h> #define MY_WINCLASS _T("MyAppWin") #define MY_APPTITLE _T("My Application") LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // Register the Window Class if(hPrevInstance == 0) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(0, IDI_APPLICATION); wcex.hCursor = LoadCursor(0, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = 0; wcex.lpszClassName = MY_WINCLASS; wcex.hIconSm = LoadIcon(0, IDI_APPLICATION); RegisterClassEx(&wcex); } // Create Window HWND hWnd = CreateWindow(MY_WINCLASS, MY_APPTITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInstance, 0); if(!hWnd) return 0; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // Message Loop MSG msg; while(GetMessage(&msg, 0, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } これを MinGW でコンパイルしてリンクするには、 g++ -mwindows myapp01.cpp とすればよい。Windows の場合は、これで a.exe ができる。これを実行してみると、 のような Window が開く。 |