QMLを使用してQtを使用してQt/C++アプリケーションを作成しています。ウィンドウの下では、ウィンドウクラスのこのスニペットに見られるように、ExtendFrameIntoClientAreaを使用して半透明ウィンドウを使用したいと思います。QT半透明のウィンドウとリモートデスクトップ
#ifdef Q_WS_WIN
if (QSysInfo::windowsVersion() == QSysInfo::WV_VISTA ||
QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS7)
{
EnableBlurBehindWidget(this, true);
ExtendFrameIntoClientArea(this);
}
#else
コードは1つの例外を除いてうまく機能しています。透過ウィンドウシステムがオフになっていると背景が黒くなり、UIの一部が透明になるので暗くなります。透明なウィンドウシステムがすぐに再初期化されても、アプリケーションを実行しているリモートコンピュータにログインすると、同じコードが実行されます。 Comparison of failed rendering (in background) and correct (in front).
問題は、トランスペアレントウィンドウを再初期化するための信号を見つけることです。または、ウィンドウが透過的に描画されたことを検出し、それに応じてUIを描画する方が良いでしょう。代替ソリューションも歓迎します。