アプリケーションの開始点はわかりました。 次はウィンドウを開くことです。 まず、簡単なメッセージボックスから見ていきます。
メッセージボックスを開くには、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"ボタンを押しました。