2

ウィンドウの場合: C++ で画像/テキストを画面に直接表示するプログラムを作成することが可能かどうか (可能な場合はその方法) を知りたいです。つまり、ウィンドウはありません。Rocketdock と Rainmeter の例を見て、まだ私が何であるかについて混乱している場合。

4

1 に答える 1

3

Qt やその他のフレームワークを使用しなくても、確実に実行できます。Win32 API だけがそれを行うのに役立ち、内部的には、すべてのフレームワークがこれらの API を呼び出すため、これらのフレームワークのいずれにも魔法はありません。

まず、ウィンドウがなければ画像やテキストを表示できないことを理解してください。すべてのプログラムは、何らかのウィンドウを使用してテキストや画像を表示します。Windows SDK に付属の Spy++ を使用して確認できます。十字記号をクリックし、ウィンドウなしで表示されていると思われる画像またはテキストをクリックします。Spy++ は、それが含まれているウィンドウを表示します。

どのウィンドウにも含まれていないように見える画像やテキストを表示する方法を次に示します。さて、特定の手順を実行する必要があります。

  1. キャプション バー、境界線のサイズ変更、コントロール ボックス、最小化、最大化、または閉じるボタンのないウィンドウを作成します。CreateWindowEx()を使用して、目的のウィンドウ スタイルのさまざまなウィンドウ スタイルWS_EX_XXXWS_XXXを確認します。

  2. 窓ができたら、窓を切り取る必要があります。クッキーカッターによく似ています。このためには、領域を定義する必要があります。この領域は領域と呼ばれ、 CreateEllipticRgn ()CreatePolygonRgn()CreateRectRgn()CreateRoundRectRgn()などの多くの関数を使用して定義できます。これらの関数はすべて、領域へのハンドルである HRGN を返します。楕円形または長方形の領域は、スターターとして問題ありません。

  3. 今、最後の部分。その特定の領域のようにウィンドウをカットする必要があります。ウィンドウへのハンドルとその領域へのハンドル ( HRGN ) を必要とするSetWindowRgn()関数を使用します。この機能は、ウィンドウを希望の形状にカットします。

  4. 今度は画像またはテキストです。ウィンドウ内に画像またはテキストを描画します。イメージに合わせてウィンドウをカットしたに違いないと思います。ウィンドウに顔を付けるだけです。WM_ERRASE BackgroundまたはWM_PAINTメッセージのいずれかで画像を描画するだけです

  5. SetWindowPos()を使用して、ウィンドウを画面上の希望する場所に移動します。CreateWindowEx() で正しいパラメーターを使用した場合、この手順は必要ありません。

  6. SetWindowLong()関数を使用して、さらにウィンドウのスタイルを設定できます。

  7. おめでとうございます。ウィンドウを使用せずに画像が表示されました ;)

于 2013-09-21T20:11:50.380 に答える