引数がいっぱいあって大変ですね。 最初のクラス名はプログラムの最初に出てきたszClassNmeです。 次の、ウィンドウの名前はウィンドウのタイトルバーに表示される ものです。HWND CreateWindow( LPCTSTR lpClassName, //クラス名 LPCTSTR lpWindowName, //ウィンドウの名前 DWORD dwStyle, //ウィンドウスタイル int x, //X座標 int y, //Y座標 int nWidth, //ウィンドウの横幅 int nHeight, //ウィンドウの高さ HWND hWndParent, //親ウィンドウハンドル(親を作るときはNULL) HMENU hMenu, //メニューハンドル、クラスメニューの時はNULL HANDLE hInstance, //インスタンスハンドル LPVOID lpParam //ウィンドウ作成データ );
ウィンドウスタイルには「WS_何とか」を指定します。 通常はWS_OVERLAPPEDWINDOW指定しておくと楽です。 これは、「WS_何とか」をいくつも併せて指定したのと同じになります。
X座標からウィンドウの高さまでは特に説明は必要ないでしょう。 自分で指定するのが面倒くさいときは「CW_USEDEFAULT」を指定して下さい。 ウィンドウズが適当にやってくれます。
親ウィンドウのハンドルは、子供ウィンドウを作るとき必要です。 親を作るときはNULLにして下さい。
メニューハンドルはメニューを 付けるとき必要ですが、クラスメニューを使うときはNULLにしておきます。 クラスメニューというのは、WNDCLASSに登録されたメニューですね。
最後の引数はNULLにしておいて下さい。
そして、この関数の戻り値が作り出したウィンドウの
ウィンドウハンドルとなります。このウィンドウに対して
何かするときはこのウィンドウハンドルが必要になります。
さて、ウィンドウを作成したらこれを画面上にどのように表示するかを 決めます。これがShowWindow関数です。 VC++4.2のヘルプには次のように出ています。
最初の引数はさっき作ったウィンドウのウィンドウハンドルです。 次の引数はウィンドウの状態を示す整数です。 これは、次のようなものがあります。BOOL ShowWindow( HWND hWnd, // handle of window int nCmdShow // show state of window );
他にもまだまだいっぱいあります。ヘルプで調べてみて下さい。 通常はSW_SHOWでよいでしょう。SW_SHOW //位置、大きさをそのままで SW_SHOWMAXIMIZED //最大表示 SW_SHOWMINIMIZED //アイコン表示 SW_HIDE //隠しウィンドウにする
さて、次にすることはUpdateWindow(hWnd)を実行します。 これは、プロシージャにWM_PAINTメッセージを送ります。 WM_PAINTメッセージについてはまだ解説していませんが 今後頻繁に出てきます。簡単にいえばウィンドウを書き直せ という意味です。
次がメッセージループです。 送られてくるメッセージをここで翻訳してプロシージャに送ります。
これも、決まった書き方ですのでこのようにして下さい。 いつまで、グルグル回しをしているかというと WM_QUIT(終了)メッセージが来るまでです。while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
これで、WinMain関数でやっていることを
一通り解説しました。あとは、プロシージャ部分ですが
これは、また次回のお楽しみです。
Update Mar/18/1997 By Y.Kumei