|
|
||||
Tips > |
|||||
IsIconic でアイコン化されたアプリを自動表示 |
更新 : 2010/06/11 |
||||
|
|
||
解説: パソコンで作業していて、任意時間が経過したのを知りたい時、画面にメッセージが表示されると便利です。 このような時使える、うってつけの関数に、Win32API の IsIconic があります。この関数は、ウィンドウがアイコン化されているかどうかを判定してくれますので、上記の目的が達成できます。 BOOL IsIconic( HWND hWnd // ウィンドウのハンドル ); 戻り値は、ウィンドウが最小化されていれば、0 以外の値、最小化されていなければ、0 が返ります。 使用例: Win32API の IsIconic 関数を使って、アイコン化されたアプリケーションを指定時間で画面に呼び出しています。 コンポーネントは、 Label と Timer を適当に配置しておしまいです。 コンポーネントの設定は、Timer1 の Interval を 5000 に Form1 の WindowState プロパティを wsMinimized にしておいてください。 Label1 の Caption には何かコメント(今回は"時間になりました!!")を入れておきます。 アプリケーションを起動すると、Form1 はアイコン化されます。 その後、任意時間が過ぎると、OnTimer イベントに記述した SendMessage 関数によってアプリケーションが画面に現れます。 表示時間は、結果がすぐ分かるように現在は 5 秒に設定してあります。いろいろな時間で試してみてください。 ヒント: アプリケーションが画面に表示されたとき、Timer を止める、あるいは時間を任意に設定できる、 メッセージを好みで入れ替えられる、などの工夫を加えれば、ちょっとしたアプリケーションが完成します。 IsIconic 関数は、単にウィンドウがアイコン化されているかどうか判断するだけです。Tips はこのようにひとつひとつは小さなものですが、その使い方によって、様々な場面で発展が可能です。 上手く組み合わせて、アプリケーション作成の役に立ててください。 //------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { // アイコン化していた場合 if (IsIconic(Application->Handle)) // 元のサイズに戻す SendMessage(Application->Handle, WM_SYSCOMMAND, SC_RESTORE, 0); } //------------------------------------------------------------------- |