アプリケーションの開始点はわかりました。 次はウィンドウを開くことです。 まず、簡単なメッセージボックスから見ていきます。
メッセージボックスを開くには、MessageBox関数を使います。 これは次のようになっています。 引数は4つです。
int MessageBox( HWND hWnd, // オーナーウィンドウのハンドル LPCTSTR lpText, // メッセージボックス内のテキスト LPCTSTR lpCaption, // メッセージボックスのタイトル UINT uType // メッセージボックスのスタイル );
オーナーウィンドウのハンドルには親ウィンドウのハンドルをいれます。 今は親はいません。 そんな時は "NULL" か "HWND_DESKTOP" を代入します。 どちらも同じ値です。 また、スタイルには 0 のような数値をいれます。
/*
メッセージボックス(MessageBox関数)
*/
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow){
MessageBox(NULL, TEXT("msg"), TEXT("caption"), 0);
}
次のようなメッセージボックスが出て来ます。 テキストとタイトルは、見たとおりウィンドウに表示される文字です。
メッセージボックスが開きました。 そして、ボタンが押されるのを待ちます。 押されたらメッセージボックスを閉じ、アプリケーションは終了です。
スタイルの値を変えると見た目が変わります。 直接数値を書いてもいいのですが、"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言語のビット演算子です。
どのボタンが押されたのかは、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"ボタンを押しました。