問題タブ [wpf-interop]
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.
c# - WPF でホストされている WinForm が空白なのはなぜですか?
このブログのコードを以下のように要約して使用しました。メイン ウィンドウ内に WinForm が表示されますが、ラベルに配置したサンプル テキストは表示されません。
と:
wpf - WPF コントロール内で Win32 ウィンドウをホストする場合、どの Windows メッセージを処理する必要がありますか?
これまでのところ、閉じる要求である WM_CLOSE と、閉じた後にウィンドウが実際に破棄されたときの WM_DESTROY をリッスンする必要があることしかわかりません。閉じた Win32 ウィンドウで役に立たない Win32 ホスト ビューを避ける必要があるため、これらを処理する必要があります。
他に終了タイプのメッセージはありますか? ウィンドウをホストしているモジュールが何らかの理由で不安定であるかどうかを知ってもかまいません。これにより、ホスト ビューも閉じざるを得なくなります。
wpf - WPF のホストされたウィンドウでマウス メッセージが表示されない
WPF アプリケーションで WinForms ユーザー コントロールをホストするよりも少し進んで、実際には Delphi フォーム、つまりトップ レベル ウィンドウをホストしています。私はブログ投稿How To Host Top-Level HWNDs In WPFのブードゥーを通じてそうしています。
ほぼすべてが完璧に機能します。Delphi に組み込まれた COM サーバーにメニュー パス文字列を送信すると、COM サーバーからウィンドウ ハンドルが返されます。このウィンドウ ハンドルは、ブログで説明されているホスト コントロールに渡します。Delphi ウィンドウは、私の介入なしで、ほぼすべてのイベント (むしろ Windows メッセージ) を正しく受信します。
唯一の問題はボタンです。それらはクリック イベント/メッセージを正常に受け取り、機能しますが、Delphi の担当者がボタンに新しいアイコンを追加し、各ボタンにはアクティブ アイコン、ホバー アイコン、およびクリック アイコンがあります。これらのアイコンを変更する必要があるメッセージを受け取りません。これらを除いて、ほとんどすべてのメッセージが機能するのはなぜですか? これを修正するには、何を読んだり、何をしたりできますか?
c# - .Net Framework が 3.5 から 4.5 に変更されると、WPF Interop Control が黒くレンダリングされる
WinForms コントロールを WPF アプリケーションに埋め込むことと、.Net フレームワークのバージョンの違いについて相互運用に関する質問があります。
以下は、WebBrowser コントロール上に透明な wpf コントロール (赤いボックス) を表示し、.Net 3.5 を使用すると期待どおりに動作するはずです。
...しかし、.Net 4.5でコンパイルした後、次のことが起こります。
.Net 3.5に戻すと、すべてが再び機能します
次のコードは、.Net 3.0 から .Net 3.5 までを使用する Win32 の WPF では機能しますが、.Net 4.0/4.5 では機能しません。
Win32HostRenderer.xaml:
Win32HostRenderer.xaml.cs:
BitmapBuffer.cs:
InteropForm は派生した System.Windows.Forms.Form にすぎず、特別な魔法はありません。
WPF ページへの統合は簡単です。
そして、window Loaded イベントの後:
(Jeremiah Morrill によるコード部分。詳細については、このブログを参照してください)
wpf - キーストロークを食べるWPF Winform Interop
4 つのテキスト ボックスとボタンを持つ単一のフォームで winform プロジェクトを作成します。
ボタンをクリックすると、次のことを実行します。
ウィンドウ 1 は Wpf ウィンドウです。Window1 には 1 つのボタンがあり、そのボタンがクリックされると、次のことが起こります。
アプリケーションを実行すると、WinForm フォームがポップアップします。タブを押すと、4 つのテキストボックスを循環して問題ありません。ボタンをクリックして WPF ウィンドウを開きます。そのボタンをクリックして、メッセージボックスをポップアップします。それらを開いたままにし、WinForm フォームに戻ると、タブでフィールドを移動することはできなくなりますが、他の文字を入力することはできます。テキストボックスはキーストロークを取得するように見えますが、フォームはキーストロークを取得しません。モデルがキーストロークを取得したかのように、システムのビープ音も聞こえます。
編集 2014 年 9 月 9 日午後 3 時 44 分
ハンスはコメントで返信し、正しかった。私は、他の人が再現しやすく、同じ症状を示した、より単純なケースを説明しようとしました。実際の問題は、モーダルから親への機能をサポートするウィンドウ基本クラスを作成したことです。BaseWindow に関連するコードは次のとおりです。
このコードは、何らかのブログ/フォーラムの投稿から取得したものだと確信していますが、コード内でそれへの参照を見つけることができません。モーダルを親に保持したいのですが、奇数のキー押下の問題に対処する方法があります。問題を再現するには、Window1 の button_click を置き換えて、これを基本クラスとして使用するウィンドウで ShowModalToParent を呼び出します。
wpf - ElementHost がサイズ変更時に黒い境界線がちらつく
免責事項: これは重複した投稿ではありません。私はこの問題についてグーグルで調べました。this、this、およびthis SO の質問もお読みください。私はそれらのことをいくつか試しましたが、何も役に立たないようでした.
次の簡単なコード例を考えてみましょう。これは、WinForm 内の空のElementHostです(内部に WPF コントロールはありません)。
フォームのサイズを変更すると、フォームの境界線に 2 つの黒い縁が表示されます。
誰かがこの問題を解決するために私の例で実用的な解決策を与えることができますか?
c# - 直接作成した HwndSource から "から" WPF ウィンドウを取得するにはどうすればよいですか?
直接作成した場合、コードからアクセスできるようになっHwndSource
た WPF も作成しましたか? Window
もしそうなら、どうすればアクセスできますか?
それとも、どういうわけかそれにWPFWindow
を「追加」する必要がありHwndSource
ますか? もしそうなら、どうすればいいですか?
ドキュメントを徹底的に調べましたがHwndSource
、この部分はまったく説明されていません。既存の WPF ウィンドウから取得できることは理解してHwndSource
いますが、それは役に立ちません。の作成をインターセプトする必要があるためWindow
、強制的にWS_CHILD
スタイルを適用し、その親を直接設定できます。また、親を強制したい場合は、 HwndSource を直接作成する必要があるとドキュメントに記載されています。
編集:私はその中で見つけることができるすべての質問を研究してきましHwndSource
た。オブジェクトのプロパティを表示するWPFオブジェクトに設定することにより、WPFオブジェクトをオブジェクトに「追加」しているように見えます。または多分メソッドを呼び出すことによって?次にそれらを調べます。これが他の質問者に役立つことを願っています。HwndSource
RootVisual
HwndSource
HwndSource
AddSource
wpf - QT アプリケーションを WPF アプリケーションにホストすることは可能ですか?
メイン UI の一部として既存の QT GUI アプリケーションをホストする WPF GUI アプリケーションを作成しようとしています。
QT アプリケーションは、マウス/キーボード入力を処理する必要はありません。
このSO Postに記載されているアプローチを試しました。これらのアプローチはすべて、QT アプリケーションでは機能しないようです。