5

スチームウィンドウ これは、サイズ変更されているSteamのクライアントウィンドウのスクリーンショットです。

Steamのクライアントウィンドウには2つの優れた機能があります。

  1. 非常に反応の良いカスタムウィンドウ。
  2. 標準のウィンドウとは異なる、クールなガラスのサイズ変更効果(1に強く関連する副作用である可能性があると考えられます)

winapiを使用して同様のウィンドウを作成したいとします。どうすればいいですか?

ウィジェット管理に関連するものについては質問しませんが、技術的なwinapiのトリックについては質問します。

4

1 に答える 1

6

基本的に、ウィンドウでほとんど何でもできます。しかし、ほとんどのトリックは手動で実装する必要があります。

  1. 「非常に反応が良い」とは何ですか?ウィンドウに標準境界線がないことを意味する場合、実装は簡単です。ウィンドウを作成するときにWS_BORDERandを指定しないでください。その後、境界線とキャプションを自分で描く必要があります。ハンドルとメッセージ、背景の描画、メニュー、すべて通常どおり。WS_CAPTIONWS_POPUPWM_ERASEBKGNDWM_PAINT
  2. この効果は、私にはバグのように思えます。これは次のように行われます: ウィンドウのサイズが変更され、WM_SIZEメッセージが取得され、処理されWM_ERASEBKGND、ウィンドウが無視するメッセージが Windows から送信されます。したがって、システムは、新しいウィンドウ イメージでまだ塗りつぶされていない新しいウィンドウ フレームの周りに新しい影を描画します。そして、ここでこのクールなガラス効果が得られます。窓の下に窓のエアロ シャドウがある古いイメージです。Windows の影を無効にして、この効果を確認してみてください。

カスタムのサイズ変更境界線を作成するには、次の関数が役立つ場合があります: LoadCursorSetCursorMoveWindow.

カスタム境界線を描画するには、標準の GDI 関数を使用できます。また、いくつかの子ウィンドウを作成して、それらに描画を委譲することもできます。これが winapi の基本です。

于 2013-03-10T17:35:48.493 に答える