.NET (WinForms、GTK#、...) で利用可能なライブラリを使用して、自分が所有していないネイティブの Windows フォームにオーバーレイをレンダリングする良い方法を探しています。正確には、ウィンドウの特定の場所にいくつかのラベルまたはテキスト ボックスを表示したいと考えています。
デバイス コンテキストと System.Drawing:私が現在行っているのは、他のアプリケーションの一部が予期しない間隔で再描画されるため、ちらつきの原因となる他のウィンドウのデバイス コンテキストに直接描画することです。したがって、フック マジックを使用してその WM_PAINT イベントをキャッチする必要がありますが、より簡単な方法がない限り、実際にはそれほど遠くまでは行きません。
子ラベルが表示された透明なウィンドウ オーバーレイ:私が試した別の手法は、他のウィンドウのサイズで Windows.Forms.Form を作成し、TransparencyKey を使用して子のみを表示することでした。ウィンドウを一番上のものにしたくないので、これを正しくするのはかなり難しいようですが、外部ウィンドウのちょうど1 つのZ レベルだけです。利点は、クリックイベントなどを実際に処理できるため、より多くの動作を追加できることです。
上記の2つの手法の問題をどのように実装/処理しますか?