タイムアウトするメッセージボックス
時間が経つと自動で閉じるMessageBoxを作りたくなったので調べてみる。
結果、Google サジェストの提案から、どうやらMessageBoxTimeout関数を使うとできるらしいことがわかった。
でも、この関数は仕様が公開されてないらしい。念のためVisual C++ 2010 ExpressやMinGWが持ってるヘッダーファイルをgrepしてみたが見つからない。現在でも非公開のようだ。
とりあえずPythonで試してみるか。
確かに動くね。じゃあ、次はC言語(C99)から。
#ifdef UNICODE #undef UNICODE #endif #include <windows.h> #include <stdio.h> typedef int (__stdcall * Type_MessageBoxTimeoutA)(HWND, LPCSTR, LPCSTR, UINT, WORD, DWORD); int main(void) { HMODULE user32 = LoadLibrary("user32.dll"); if (! user32) { fputs("user32.dll が読み込めません。\n", stderr); return 1; } Type_MessageBoxTimeoutA MessageBoxTimeoutA; MessageBoxTimeoutA = (Type_MessageBoxTimeoutA) GetProcAddress(user32, "MessageBoxTimeoutA"); if (! MessageBoxTimeoutA) { fputs("MessageBoxTimeoutA 関数の場所を取得できません。\n", stderr); FreeLibrary(user32); return 1; } MessageBoxTimeoutA(NULL, "このメッセージは3秒後に自動的で消滅する。", "", MB_YESNO, LANG_NEUTRAL, 3 * 1000); FreeLibrary(user32); return 0; }