Go to Nazona Web Site

謎奈の泉 > Delphi Memo Pad > タスクバーボタンを非表示に

Memo List content pic
エラーの話 その1
Delphiで共用体
タスクバーボタンを非表示に

関連コンテンツ content pic
ソフトウェア
プログラム掲示板
リンク集

戻る content pic
謎奈の泉 トップページ
タスクバーボタン index pic
■ 前書き
 オンラインソフトを造りたいと思っている人ならば、 タスクトレイ常駐型のアプリケーションを作る機会があるかもしれません。
 タスクトレイにアイコンを追加する方法はさまざまなTipsページで取り上げられています。 その中にはポップアップメニューと連動させるサンプルが載っているページもあるでしょう。
 たいていのそういったサンプルではメインウィンドウにTPopupMenuコンポーネントを貼り付け、 実行時は Form1.Visible := False; としておいて、 メインウィンドウなどは Form1.Show; で表示すると思います。
 ところで、せっかくタスクトレイに収まったのに、メインウィンドウを開くとタスクバーにボタンが表示されるのが 気になっている人はいませんか? 私は気になってしまいました。
 今回は、Delphiのメインウィンドウの表示中に表示されるタスクバーボタンの消し方をお教えします。 タスクトレイ常駐型のアプリケーション以外でも使えるので、ぜひ試してみてください。

■ 説明
 タスクバーにボタンを表示しないウィンドウを作成するには、拡張ウィンドウスタイルWS_EX_TOOLWINDOW を追加します。
 さて、C言語でWin32アプリケーションを作成する場合は、ウィンドウの作成も自分でコーディングするので、あらかじめ拡張ウィンドウスタイルを設定することが可能ですが、 DelphiはRADツールなので、ウィンドウは自動で作成されます。そういうことなので、拡張ウィンドウスタイルを変更するタイミングが重要になります。
 ウィンドウが作成される前に拡張ウィンドウスタイルに手を加える必要があるので、メインフォームのユニットに初期化部を作成し、その中で変更します。

■ プログラム
{ 初期化部 }
initialization
  SetWindowLong(
    Application.Handle,
    GWL_EXSTYLE,
    GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW
  );

■ 解説
 Application.Handle はメインフォームのウィンドウハンドルと同じ値です。
 GWL_EXSTYLESetWindowLong / GetWindowLong API で拡張ウィンドウスタイルを設定 / 取得する時の定数です。

■ 最後に
 Delphiはアプリケーションを容易に作れる優れたRADツールであるので、 逆に高度なことをしようとするとDelphi固有の仕様に突き当たるかもしれません。
 そんなときは、あきらめずに研究しましょう。 わからなければプログラミング掲示板で質問してみるのもいいでしょう。
 謎奈の泉の掲示板でも質問を受け付けていますので、ぜひとも書き込んでみてください。
Write : 2005/02/20

Copyright (c) 2002-2004 謎奈 / うえちょこ All rights reserved.