ホームページ >バックエンド開発 >C++ >WinForm アプリが予期せず表示されずにシステム トレイに最小化されて起動するようにするにはどうすればよいですか?

WinForm アプリが予期せず表示されずにシステム トレイに最小化されて起動するようにするにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-06 02:03:41952ブラウズ

How to Ensure a WinForm App Starts Minimized to the System Tray Without Showing Unexpectedly?

起動時に WinForm アプリケーションをトレイに最小化する

問題

WinForm アプリケーションの作成トレイに最小化するのは簡単です。ただし、最小化された状態でアプリケーションを起動しようとすると、アプリケーションが Alt-Tab ダイアログに表示され、タイトルバーが表示される場合があります。

解決策

アプリケーションが起動時に表示されないようにするには、SetVisibleCore() メソッドをオーバーライドできます。これには以下が含まれます:

protected override void SetVisibleCore(bool value) {
  if (!allowVisible) {
    value = false;
    if (!this.IsHandleCreated) CreateHandle();
  }
  base.SetVisibleCore(value);
}

ここで、allowVisible は、アプリケーションをいつ表示するかを示すために設定されたフラグです (たとえば、ユーザーが NotifyIcon コンテキスト メニューで [表示] をクリックしたとき)。 allowVisible が false の場合、value パラメーターは false に設定され、フォームが表示されなくなります。ただし、フォームのハンドルが作成されていない場合は、値を false に設定する前にハンドルを作成する必要があります。

さらに、ユーザーがタスク バー アイコンをダブルクリックしたときにアプリケーションが閉じないようにするには、OnFormClosing メソッドを次のようにします。 overridden:

protected override void OnFormClosing(FormClosingEventArgs e) {
  if (!allowClose) {
    this.Hide();
    e.Cancel = true;
  }
  base.OnFormClosing(e);
}

ここで、allowClose は、アプリケーションを閉じる必要があるとき (ユーザーがクリックしたときなど) を示すために設定されたフラグです。 NotifyIcon コンテキスト メニューの「終了」)。 allowClose が false の場合、フォームは非表示になり、アプリケーションが終了しないように e.Cancel プロパティが true に設定されます。

補足

の Load イベントメイン フォームは、フォームが最初に表示されるまで起動されません。したがって、初期化は Load イベント ハンドラーではなくフォームのコンストラクターで行う必要があります。

以上がWinForm アプリが予期せず表示されずにシステム トレイに最小化されて起動するようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。