システム開発・Webサイト構築 プラスラス

2007/8/17 金曜日

【BCB】ウィンドウを非アクティブな状態で表示させる

このエントリーを含むはてなブックマーク Yahoo!ブックマークに登録 Google ブックマーク del.icio.us

メールチェッカーなどの補助的なアプリケーションでは、ウィンドウを表示すると同時に、入力フォーカスを他のウィンドウから奪ってしまうと、ユーザーが作業を中断させられて不便な思いをすることがあります。

以下は、C++ Builderで、ユーザーが作業中のウィンドウから入力カーソルを奪わずに、自分のプログラムを起動する方法です。

フォームのOnShowイベントで、Win32 APIのSetWindowPos関数を第7引数にSWP_NOACTIVATEというフラグを指定して呼ぶことで実現できます。

非アクティブな状態で表示させたいウィンドウであるTForm1のFormShow内でSetWindowPosを実行しています。

void __fastcall TForm1::FormShow(TObject *Sender)
{
   ::SetWindowPos(this->Handle,
            NULL,
            0, 0, 0, 0,
            SWP_NOACTIVATE | SWP_NOMOVE |
            SWP_NOSIZE | SWP_SHOWWINDOW );
}

Filed under: C++,C++ Builder,Programming — Nakai @ 9:33:00

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.617 sec. Powered by WordPress