カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2018年07月19日(木)

Windows API、表示スケールが変わると、テーマのハンドルが無効になります

写真閲覧ソフトのミルノ PC フォトフレーム の修正中。
現在、メニューを「表示スケール」に対応させる作業中です。

写真をミルノに!

で覚えてね。キラーン。

タイトルの通り、OS の表示スケールを
変えると、テーマのハンドルが無効になります。

テーマのハンドルとは、
OpenThemeData の返り値です。

ハンドルが無効になることは、
OpenThemeDataForDpi の方に書いてあります。

現時点では、何故か、関数プロトタイプの返り値が
void になってますが、HTHEME の間違いですね。

ハンドルが無効になるタイミングは、
WM_DPICHANGED メッセージでわかります。

このメッセージは、トップレベルの
ウィンドウにのみ届くみたいですなので、
そのタイミングで、ハンドルを開き直すか、
後で開き直すために、 CloseThemeData しましょう。

もし、描画速度が気にならないのであれば、
描画の度に、OpenThemeData して、
ハンドルをキャッシュしない
手もあるかもしれません。

ちなみに、自分の環境では、表示スケールを変えた後で、
HTHEME を開き直さずに、描いた場合、
描けたり、描けなかったりしました。

不具合が見つけづらいので、ご注意ください。

おまけ

ちなみに、 WM_THEMECHANGED メッセージが届いたときも、
HTHEME は無効となります。

このメッセージは子ウィンドウにも届くみたいなので、
HTHEME を使って描画するコントロールの
コードで対応できると思います。

・・・

日本語の最新版はこちらのページから、ダウンロードできます
You can download the latest version of Miruno PC Photoframe here.

x64 の最新版はこちらのページから、ダウンロードできます
Download the latest version of Miruno PC Photoframe x64 here.

・・・

月額会員専用のx64 版 もあります。
月額会員には、こちらのページから参加できます

・・・

例えば、Windows 10 の場合、ハイコントラスト
にしたときに、WM_THEMECHANGED が届きます。

この場合、オープン済みの HTHEME は無効となり、
テーマの機能も無効になるので、OpenThemeData
で開き直すと NULL になります。

ミルノ PC フォトフレーム
ミルノ PC フォトフレームのダウンロード
ミルノ PC フォトフレームの更新履歴
ご意見・ご要望連絡窓口


コメント
コメントする