2017-06-02 8 views
-2

私はGoogleで何時間も費やしてきましたが、この特定のテーマについては関連性の高い結果が見つかりませんでした。現在のアプリケーションをタスクバーでクリックして確認しますか? (C++、Windows API)

私はアプリケーションを持っています(まだ最小化されていない場合)ユーザーがタスクバーでクリックすると最小化したいと思っています。この問題は、ウィンドウがボーダレスであるという事実に関連しているようです。ボーダーを設定すると、コードを介さずにタスクバーでクリックするだけで最小限の作業が可能になります。しかし、私はクライアント領域を使って "カスタム境界"を作っているので、境界線のないウィンドウが必要です。

tl; dr現在のアプリケーションがタスクバーでクリックされているかどうかを確認するにはどうすればよいですか?

多くの感謝! Samuel

+2

間違った質問。ウィンドウが最小限に抑えられる(または自動的に最小化されない理由)ことを知っていることに興味がありますが、代わりにソリューションについて質問しています。それは[XY問題](https://meta.stackexchange.com/q/66377/205381)と呼ばれています。 – IInspectable

+0

タスクバーボタンをクリックすると、通常の 'WM_SYSCOMMAND'通知が' SC_MINIMIZE'や 'SC_RESTORE'のようにウィンドウに送られます。国境(または国境の欠如)はそれに影響を与えるべきではありません。ボーダーを削除すると、コードがこれらのメッセージを正しく処理していますか? –

+0

なぜ私はこれから否定的な2つの評判を得たか分かりません。それは完全に有効な質問です。私はトロルに攻撃されていないインターネット上の場所はありませんか?まあ、少なくとも私は私の質問に答えて、私のアプリケーションを最小限に抑えました。それが重要です。 –

答えて

3

タスクバーを使用する必要はありません。

あなたのウィンドウにはWS_MINIMIZEBOX|WS_MAXIMIZEBOXスタイルが設定されていることを確認してください。そうでなければ、wParamSC_MINIMIZESC_RESTOREWM_SYSCOMMANDがウィンドウに表示されません。

Visual Studioのような一部のリソースエディタでは、標準のウィンドウ枠を削除するとWS_MINIMIZEBOX|WS_MAXIMIZEBOXを設定できません。次のようにスタイルをプログラムで追加することができます。

DWORD style = GetWindowLong(hwnd, GWL_STYLE); 
SetWindowLong(hwnd, GWL_STYLE, style | WS_MINIMIZEBOX | WS_MAXIMIZEBOX); 
関連する問題