int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow ); |
LRESULT APIENTRY WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); |
#include <windows.h>
#include "winmain.h"
/*
ウィンドウのメイン関数
*/
int WINAPI
WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
static char szAppName[] = MY_APPNAME; //アプリケーションの名前
HWND hwnd; //ウィンドウハンドル
WNDCLASS wndclass; //ウィンドウクラス
//ウィンドウクラスの設定
wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW; //ウィンドウスタイル
wndclass.lpfnWndProc = WndProc; //ウィンドウプロシジャ関数へのポインタ
wndclass.cbClsExtra = 0; //エクストラバイト
wndclass.cbWndExtra = 0; //エクストラバイト
wndclass.hInstance = hThisInstance; //インスタンスハンドル
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //アイコンの指定
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //カーソルの指定
wndclass.hbrBackground = GetStockObject(BLACK_BRUSH); //背景を塗るブラシへのハンドル
wndclass.lpszMenuName = NULL; //クラスメニューへのポインタ
wndclass.lpszClassName = MY_CLASSNAME; //ウィンドウクラスの名前
//ウィンドウクラスの登録
RegisterClass(&wndclass);
//ウィンドウの作成
hwnd = CreateWindowEx(
0,//WS_EX_TOPMOST, //ウィンドウの拡張スタイル
wndclass.lpszClassName, //ウィンドウクラスの名前
MY_WINDOWCAPTION, //ウィンドウのタイトル
WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, //ウィンドウのスタイル
CW_USEDEFAULT, //ウィンドウ表示x座標の初期値
CW_USEDEFAULT, //ウィンドウ表示y座標の初期値
MY_WINDOW_XSIZE, //ウィンドウの横幅の初期値
MY_WINDOW_YSIZE, //ウィンドウの縦幅の初期値
NULL, //親ウィンドウのハンドル
NULL, //ウィンドウメニューのハンドル
hThisInstance, //インスタンスハンドル
NULL); //作成引数
//ウィンドウの表示
ShowWindow(hwnd,nCmdShow);
//ウィンドウの再描画
UpdateWindow(hwnd);
//フォーカスをもらう
SetFocus(hwnd);
//カーソルを非表示
//ShowCursor(FALSE);
//メッセージループ
MSG msg;
while(GetMessage(&msg, NULL, 0, 0)) //メッセージの取り出し
{
TranslateMessage(&msg); //メッセージの変換
DispatchMessage(&msg); //メッセージの転送
}
return msg.wParam;
}
/*
ウィンドウプロシジャ関数
*/
LRESULT APIENTRY
WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc; //デバイスコンテキストのハンドル
PAINTSTRUCT ps; //クライアント領域描画用情報構造体
//ウィンドウメッセージの処理
switch(message)
{
case WM_PAINT: //描画要求メッセージ
hdc = BeginPaint(hwnd,&ps); //描画開始(デバイスコンテキストを作成)
EndPaint(hwnd,&ps); //描画終了(デバイスコンテキストを破棄)
return 0;
case WM_DESTROY: //ウィンドウ破棄要求メッセージ
PostQuitMessage(0); //WM_QUITをメッセージキューに放り込む
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam); //残りはデフォルトにお任せ
}
WinMain
RotoZoomer
Tunnel
Plasma
Fire
MetaBall