2

私は .NET 2.0 に透明なフォームを持たせようとしています。これは上にあり、マウスのクリックでは見えませんが、その上に描画することは可能です。TransparencyKey をフォームの背景色に設定することで、簡単にこれに到達できます。しかし、すべての Java プログラム (JDownloader、Vuze、Open Office など) で非常に再現しやすい問題が 1 つあります。コンテキスト メニューが表示されているときに、別の場所をクリックしてもメニューの一部 (または全体) が表示されたままになることがあります。アイテムをクリックできないため、物理的に閉じられていますが、その画像は私の一番上の目に見えないフォームのままです-おそらく再描画に問題がありました. どんな助けにもとても感謝しています。

ヒューゴ

4

1 に答える 1

1

通常のWindowsアプリケーションは、コンテキストメニューを実際のウィンドウとして実装するため、ユーザーがコンテキストメニューを閉じると、その下にあるすべてのウィンドウが適切に通知を受け取り、自分で再描画するため、メニューの画像がどこにも「残され」ません。

問題が発生しているJavaアプリは、画面に直接描画することでコンテキストメニューを実装している可能性が高く、メニューが閉じられると、アプリは独自のロールを実行し、その下のすべてのウィンドウを無効にします。この方法では、ウィンドウがその上にあると見なされ、アプリが透過的であることが認識されないため、アプリが占める領域が無効になることはないと思います(これは推測です-確かではありません。これらのアプリのコンテキストメニューは、ネイティブアプリのメニューとは異なって見えます。その場合、これがおそらく起こっていることです)。

これが起こっているのであれば、それについてできることはあまりありません。透明なウィンドウを使用する代わりに、自分で画面に描画することもできます。または、フォームにタイマーを設定して、定期的に更新/無効化を呼び出すこともできます。

于 2011-05-04T00:32:14.630 に答える