StartPage

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 ができる。これを実行してみると、

myapp.png

のような Window が開く。


添付ファイル: filemyapp.png 16383件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-08-01 (水) 09:48:44 (90d)