問題タブ [dwm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dll - WinXP で DWMAPI.DLL の遅延読み込み依存を修正するには?
WinXP で .dll を作成しましたが、ロード時に DWMAPI.DLL が見つからないと主張しています。問題は、この DLL が Vista DLL であることです。これは、IE7 がインストールされている XP ユーザーにとって既知の問題です。IE7 をアンインストールするか、[プログラムの追加と削除] を使用して .NET Framework を修復することをお勧めします。修理をしましたが、何も変わりませんでした。「Windows の再インストール」と同等ではないより良い解決策が必要なので、IE7 をアンインストールするつもりはありません。
私は IE7 をアンインストールしようとした人々について悪いことを読んだことがあるので、その道を行くのは気が進まない。
Visual Studio 2003 (7.1) で C++ を使用しています。アプリケーションの起動時にロードを強制的に遅らせた可能性があるオプションが表示されません。DLL プロジェクトを作成したときは、デフォルト設定を使用しました。私は興味深いオプションを見つけました.Linker->Input->Delay Loaded DLLsなので、そこにDWMAPI.DLLを入れて強制的に遅延ロードさせました。ただし、リンクすると次のようになります。
..もちろん、DLLをロードしようとしても何も変わりませんでした。なんと、DWMAPI.DLL につながる DLL のツリー全体を追加しましたが、同じメッセージが表示されます。(記録としては、foundation.dll->shell32.dll->shdocvw.dll->mshtml.dll->ieframe.dll->dwmapi.dll です。)
私がやっていることをより具体的にするために、私は Maya プラグインを書いており、スクリプト エディタで常に役立つテキストを取得しています。
最初に Dependency Walker を使用して問題を突き止めたところ、DWMAPI.DLL にたどり着きました。これらは依存するメッセージであり、DWMAPI.DLL はその横に黄色の疑問符が付いている唯一のものです。
ジェラルドは正しい。実際、Maya は Dependency Walker とは異なる PATH を使用しています。私のプラグインは、Maya プラグイン ディレクトリに存在する別の DLL (イメージ処理用) をロードし、問題なく検出されましたが、Maya は検出しませんでした。Maya.env の PATH に「;plug-ins」を追加する必要がありました。
結局、この問題は DWMAPI.DLL とは関係ありませんでしたが、DWMAPI は一般的な問題であるため、Novell の Web サイトで DWMAPI の問題について見つけた最良のリンクをここに投稿します。基本的に、ほとんどのプログラムでは、depends.exe にこの警告が表示されますが、その横に遅延読み込みアイコンがあり、プログラムが直接的または間接的に DWMAPI を呼び出さないことが確実な場合は、問題ありません。問題は別のところにあります。遅延ロード アイコンが表示されない場合は、Visual Studio の /DELAY および /DELAYLOAD オプションを確認する必要があります。依存しているという事実は、「エラー」ではなく「警告」を私に与えたという事実は、DWMAPI が自動的にロードされていないという事実の手がかりでした。
pyqt - Qt: 背景を消去 (Windows Aero Glass)
アップデート
Qt とDWMの使用例については、 「 Using Blur Behind on Windows 」を参照してください。代替テキスト http://labs.trolltech.com/blogs/wp-content/uploads/2009/09/blurbehind2.png
元の質問:
Qt で Windows Aero Glass ウィンドウを作成したいのですが、次のようになります。
しかし、いくつかを呼び出した後my_window->repaint()
、ウィンドウのラベルが壊れます:
しかし、ウィンドウのサイズを少し変更すると、適切に再描画されます。
問題は、ウィンドウの背景を消去して、ウィジェットがきれいなガラスに自分自身をペイントするようにするにはどうすればよいかということです。
問題を再現するための短いコードは次のとおりです (Vista with Aero):
ここでウィンドウをクリックするか、Alt-Tab
数回クリックするだけです。
とにかく、Aero Glass でラベルを使用することは、私が必要としているものではありません。なぜなら、QLabel は (ウィンドウのタイトルのように) しばらく光って自分自身をペイントする方法を知らないからです。私が必要としているのは、「ガラス」をきれいにする一般的な方法です。
winapi - SetWindowRgn での Vista のライブ サムネイルの問題
おそらく何かが欠けていることはわかっていますが、領域を持つウィンドウを使用している場合、ウィンドウにライブ サムネイル プレビューを正しく表示できないようです。最小化ボタンを押すと、プレビューは (他のウィンドウのように) 完全なプレビューを表示するのではなく、最小化されたサイズ (160x25) にクリップされます。
いくつかのポイント:
1) プレビューは Windows Live Messenger で問題なく動作するため、Microsoft はそれを行う方法を考え出しました。
2) ウィンドウが表示される前にのみ SetWindowRgn を呼び出すと、正常に動作します (したがって、リージョン ウィンドウを処理する方法を知らない DWM のせいではありません)。ウィンドウが表示される前に SetWindowRgn を何度も呼び出すことができ、うまく機能します。 .
3) サイズ変更の場合、ウィンドウを表示した後にウィンドウ領域を設定する必要があります。そのため、直前に設定する修正は機能しません。
4) デフォルトのウィンドウ プロシージャを使用しても、まだバグが発生します。したがって、メッセージを誤って処理することの障害ではありません (ただし、「処理しない」ことの障害である可能性があります:))
5) (ウィンドウの最小化ボタンの代わりに) タスクバー ボタンをクリックして最小化すると、プレビューは正常に機能します (表示されている領域を設定した後でも)。プレビューの扱い方ではないことを改めて証明。
ウィンドウを表示した後にリージョンを設定すると、バグが発生します。従うべきコード:
windows-vista - DWM で既存のウィンドウの「常に手前」のサムネイルを作成するのはどれほど簡単か
タスクバーの Vista のウィンドウにカーソルを合わせると、小さなプレビューが表示されるのでとても気に入っています。ビデオの場合は、サムネイルでも再生されます。
この小さなウィンドウを「切り離して」、画面の「常に一番上に」サムネイルとして残しておきたいと思うことがよくあります。多分それは私が見ているプログレスバーかもしれませんし、ちょっとしたプレビューが欲しいビデオかもしれません.
これは、DWM によってプログラミングが容易になるようなものではないでしょうか。これは、マネージされた C# でプログラミングする単純な試みでしょうか。
このようなコードを作成する方法について、既存のソリューションとポインターの両方に興味があります。
windows - ウィンドウを応答なしとしてマークする前に、ウィンドウ マネージャが待機する時間はどれくらいですか?
ウィンドウが応答していないと判断し、応答しないクロムを表示するまで、ウィンドウはどのくらい待機しますか? Vista の DWM と XP の Explorer シェルでは、処理方法が大きく異なるため、逸話的な経験から、XP と Vista では異なると思います。
windows-7 - Windows7のデスクトップウィンドウマネージャー
Windows7に新しいDWMAPIはありますか?もしそうなら、どこでそれらのドキュメントを見つけることができますか?
delphi - Vistaアプリケーションのサムネイル
設計上、最小化されたウィンドウ自体は再描画されないため、Vistaのツールバーアプリケーションのサムネイルは、アプリケーションが最小化されても更新されません。私が持っている監視アプリケーションの場合、アプリケーションを最小化したまま、アプリケーションのサムネイルを更新すると便利です。私はDelphi2009を使用しています。誰かがこれに対する良い回避策を提案できますか?
HMcG
winapi - Vista/Aero で WM_NCPAINT を処理すると DWM グラス レンダリングが「壊れる」
WM_NCPAINT
ユーザー設定に基づいて、Aero/Glass とカスタム レンダリング フレーム (を処理することにより) を交互に切り替えるウィンドウを作成しようとしています。(Windows Vista)。
DwmComposition
有効になっています。私のアプリはグラス フレームを表示しますが、カスタム コードパスをトリガーするように設定をWM_NCPAINT
切り替えてから useDefWindowProc
のWM_NCPAINT
処理に戻るとすぐに、ネイティブ フレームは「Vista Basic」スタイルで永久に動かなくなります - もう半透明ではありませんキャプション ボタンは、通常の Aero/Glass のものとは異なって見えます。
SWP_FRAMECHANGED
送信からウィンドウスタイルの変更、元に戻す、非表示など、ウィンドウを突き刺すほぼすべての方法を試しましたが、すべて役に立ちませんでした。WM_NCPAINT
窓を延期するのではなく、ガラス窓を処理するとすぐにDefWindowProc
、永遠に「壊れた」ようです。
MSDN (code dot msdn dot microsoft dot com slash chrome) で C#/WPF の例を見つけました。これは、単に WM_NCPAINT の処理を停止する必要があり、ガラスが返されることを示しているようですが、自分のアプリでは機能しないようです。
この状態をきれいにリセットする方法はありますか? 私のコードはC++で、ここに住んでいます:
mfc - Aero/DWM で特定のウィンドウを正しくスクリーンキャプチャする方法
背景情報: この MFC アプリケーションをコーディングして長い間使用しており、ユーザーが Print Screen/Alt+Print Screen キーを押すと、スクリーンショットが自動的にハード ディスクに保存されます。Windows 7 RC を数週間使用している今まで、Aero に関連するものを使用するのを先延ばしにしてきました。
問題: 標準の GetDC/BitBlt メソッドを使用してウィンドウの内容をキャプチャしています。通常の全画面グラブを実行している間、この方法で問題はありません(開いているウィンドウの数などに関係なく)。前景ウィンドウ (Alt+PrintScreen) をキャプチャしようとすると、問題が発生します。以下に 2 つの例を示します。
例 1 http://indiecodelabs.com/extern/example1.jpg
例 2 http://indiecodelabs.com/extern/example2.jpg
ご覧のとおり、境界線があるべき場所にゴミが入っています。これは上部に向かってより顕著になり、両方のスクリーンショットでツールバーが重複していることがわかります。
私はこれについて何時間もグーグルで検索してきましたが、DWM では BitBtl/GetDC メソッドが機能しないという記事しか見つかりませんでしたが、私たち (開発者) が何をすべきかを説明する記事は 1 つも見つかりませんでした。 DWM で実行する場合、アプリで同じ機能を維持できます。
ヘルプ、ポインタ、提案は大歓迎です。
c# - C#でウィンドウのサムネイルを取得するには?
Windows 7 のスーパーバー プレビューや Aero フリップなど、ウィンドウのサムネイルを取得するにはどうすればよいでしょうか? アプリケーションのスクリーンショットは必要ありません。DWM にはこの情報を取得する方法があります。
これを行うC#の方法が欲しいです。
ありがとう