メインウィンドウ

アプリケーションの開始点はわかりました。 次はウィンドウを開くことです。 まず、簡単なメッセージボックスから見ていきます。

メッセージボックス

メッセージボックスを開くには、MessageBox関数を使います。 これは次のようになっています。 引数は4つです。

int MessageBox(
  HWND hWnd,          // オーナーウィンドウのハンドル
  LPCTSTR lpText,     // メッセージボックス内のテキスト
  LPCTSTR lpCaption,  // メッセージボックスのタイトル
  UINT uType          // メッセージボックスのスタイル
);

解説

使用例 (win122-1.cpp)

オーナーウィンドウのハンドルには親ウィンドウのハンドルをいれます。 今は親はいません。 そんな時は "NULL" か "HWND_DESKTOP" を代入します。 どちらも同じ値です。 また、スタイルには 0 のような数値をいれます。

/*
	メッセージボックス(MessageBox関数)
*/

#include	<windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow){
	
	MessageBox(NULL, TEXT("msg"), TEXT("caption"), 0);
	
}

次のようなメッセージボックスが出て来ます。 テキストとタイトルは、見たとおりウィンドウに表示される文字です。

メッセージボックスが開きました。 そして、ボタンが押されるのを待ちます。 押されたらメッセージボックスを閉じ、アプリケーションは終了です。

使用例 (win122-2.cpp)

スタイルの値を変えると見た目が変わります。 直接数値を書いてもいいのですが、"MB_OK" の様なマクロ定数が使えます。

/*
	色々なメッセージボックス
*/

#include	<windows.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
	
	MessageBox(HWND_DESKTOP, TEXT("msg"), TEXT("caption"), MB_OK);
	MessageBox(HWND_DESKTOP, TEXT("msg"), TEXT("caption"), MB_OKCANCEL);
	MessageBox(HWND_DESKTOP, TEXT("msg"), TEXT("caption"), MB_OK | MB_ICONEXCLAMATION);
}

次のようなメッセージボックスが出て来ます。

マクロ定数は"winuser.h" の中に次のように定義されています。

/*
 * MessageBox() Flags
 */
#define MB_OK                       0x00000000L
#define MB_OKCANCEL                 0x00000001L
#define MB_ABORTRETRYIGNORE         0x00000002L
#define MB_YESNOCANCEL              0x00000003L
#define MB_YESNO                    0x00000004L
#define MB_RETRYCANCEL              0x00000005L

他にもあります。 複数のマクロ定数を組み合わせることもできます。 このとき、"|" でつなげます。 これは、C言語のビット演算子です。

使用例 (win122-3.cpp)

どのボタンが押されたのかは、MessageBox関数の戻り値で知ることができます。 左から順に、1,2,3となっています。 戻り値を ans で受け取りました。

/*
	メッセージボックスの戻り値
*/

#include	<windows.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int nCmdShow){
	
	int ans;
	char msg[100];
	
	ans = MessageBox(HWND_DESKTOP, TEXT("msg"), TEXT("caption"), MB_OKCANCEL);
	wsprintf((LPSTR)msg, TEXT("戻り値は、%d です。"), ans);
	MessageBox(HWND_DESKTOP, (LPSTR)msg, TEXT("caption"), 0);
}

最初のメッセージボックスが出て来ます。

”OK"ボタンを押しました。


[前] [目次] [次]