|
MSG msg; //Windowsシステムのメッセージ構造体(あんまり気にしなくていいです)
WNDCLASS wc; //Windowクラス(窓を開くときにだけ使用します)
hinst=hIns; //グローバル変数 hinst に、起動時に与えられるインスタンス値を保持しておく
//--------------------------------------------------------------
//窓を開くための所要パラメータをWindowクラス wc のメンバ変数に与える
//--------------------------------------------------------------
wc.hInstance=hIns; //インスタンス値
wc.lpszClassName="窓1号"; //クラス名(適当でかまわない)
wc.lpfnWndProc=(WNDPROC)WndProc; //イベントハンドラを登録
wc.style=0; //スタイルはとりあえず0でいいや
wc.hIcon=LoadIcon((HINSTANCE)NULL,IDI_APPLICATION); //タイトルバーに表示するアイコンはデフォルトでいいや
wc.hCursor=LoadCursor((HINSTANCE)NULL,IDC_ARROW); //マウスカーソルも標準形式でいいや
wc.lpszMenuName=0; //
wc.cbClsExtra=0; //
wc.cbWndExtra=0; //
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
if(RegisterClass(&wc)==0)return 0;
hwnd=CreateWindowEx (
|
0, //拡張スタイルは特に考えない
wc.lpszClassName, //クラス名(↑で決めたものを与えておけばOK)
"たいとる", //Windowの左肩に表示される窓の名前
WS_OVERLAPPEDWINDOW, //ウィンドウスタイル(←ここでは縁取り指定のみ)
20,20,640,480, //窓の配置ポジション、大きさ(左肩のx,y及び幅、高さ)
(HWND)NULL, //親Windowのハンドル(ここでは無視)
(HMENU)NULL, //メニューも子ウィンドウも無いので気にしない
hIns, //インスタンス値
(LPVOID)NULL //他に参照すべきデータは無いので気にしない |
);
if(!hwnd)return 0; //Windowを開くのに失敗したら終了する
ShowWindow(hwnd,nCmdShow); //外枠の描画
UpdateWindow(hwnd); //クライアント領域の描画
win_hdc=GetDC(hwnd); //今後の画面操作に備えて DC を取得しておく
//窓が開いたら、ここで無限ループに入ってイベント監視を行う
while(1){
|
//メッセージキューになにか入って来たか?
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)){
|
//メッセージがあれば処理する
if(!GetMessage(&msg,(HWND)NULL,0,0))break; //終了メッセージならループ抜け
TranslateMessage(&msg); //キーメッセージを文字メッセージに変換
DispatchMessage(&msg); //ウィンドウプロシージャにメッセージを送付 |
}else{
|
//メッセージが無ければ Mainloop()を実行
Mainloop();
//一瞬だけOSに制御を戻しておく
Sleep(1); |
} |
}
//↓終了時には wParam パラメータが持つ終了コードを返す規定になっている
return msg.wParam; |