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 が開く。 |