2009-06-26 7 views

答えて

2

...このことができます http://www.gamedev.net/community/forums/topic.asp?topic_id=113986

それは長いですが、それには、デスクトップへの書き込みについての議論である...

希望...

〜ボルト

+0

非常に面白いスレッド。皮肉なことに私がこれを実装しようとしたのは2002年頃でもありました。小さな世界:)私はその時から問題を再検討しましたが、決して解明したことはありません。私が扱えるサンプルソースコードがありますか?議論の中のリンクは、これらすべての年の後に壊れているようです。 – Gili

+0

残念ながら、私はリンクが壊れていたことに気付きました。私はソースコードを全く持っていません...会話の少なくともいくつかがあなたの思考を刺激すると私の希望でした。スレッドに投稿して復活させる可能性があります。 – Boltimuss

+0

心配しないで、http://www.gameprogで見つけました。it/pub/lang/ccpp/tuts/AndreasJonsson/- それはいくつかの癖がありますが、私がこれまで行ったこと以上に進んでいます。おかげで多くのボルト、あなたは非常に長い時間の間私を気にされている問題を解決しました! – Gili

2

私は決してこれをやったことはありませんが、ここで私が取るアプローチです。

  1. SetWindowsHookEx経由でエクスプローラにdllを注入します。
  2. GetDesktopWindowを使用してハンドルをつかんでください。
  3. GetWindowLongPtr & SetWindowLongPtrを使用してデスクトップをサブクラス化します。
  4. 新しいWndProcで皆さんのすばらしいレンダリングをしてください。

デスクトップウィンドウを壊すと、おそらくマシンがロックされることに注意してください。すべての消滅したウィンドウ(そのユーザーのすべてのウィンドウ)が悪影響を受ける可能性があります。

また、WindowsのUM豊富互換性の歴史を考えると、虐待を吸収するためのものダミーのために目を光らせて。特に、GetDesktopWindowが実際にあなたが探しているデスクトップウィンドウを返さない場合、私は全く驚くことはありません。基本的にSpy ++などで掘り起こす必要があるかもしれません。あなたはこのスレッドを読むことができます

+0

Windows XPで数年前に提案したことは惨めに失敗しました。問題は、ウィンドウの上を前後にドラッグすると、ウィンドウの下に塗りつぶされた灰色の背景が表示され、その後にデスクトップの壁紙を使用して再描画されるということでした。あなたは非常に目に見える "涙"に終わるでしょう。 StarDock DeskScapesはWindows XP上で動作すると主張しているので、どうやってそれをやったのだろうと思う。この種の仕事にSpy ++より優れたプログラムがありますか? – Gili

+0

ティアリングは、WndProc実装のアーティファクトです。ダブルバッファリングと実際のBitBlt()を画面に表示する技術を考えてみましょう。 Vista(+)を使用して合成を有効にすると、このシナリオでも引き裂かれてしまう可能性があります。 –

+0

このケースは違うと思います。ウィンドウをデスクトップ上にドラッグすると、まずソリッドカラーを使用してウィンドウが再描画され、その上に壁紙がペイントされます。私は最初の塗料(無地)を抑制しようとしましたが、それはデスクトッププロセスにハードコードされているようです。したがって、引き裂きます。 – Gili

関連する問題