カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2018年08月03日(金)

ミルノ PC フォトフレーム、マウスカーソルを「表示スケール」に対応させるには

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

写真をミルノに!

で覚えてね。キラーン。

今日は、「表示スケール」に対応して
マウスカーソルを大きくする機能を実装しました。

まず、::LoadCursor(NULL, IDC_ARROW);
ってな感じでロードする標準のカーソルは、
表示スケールに合わせて勝手に大きくなるみたいです。

一方、::LoadCursor(hInstance, ...);
でロードするアプリケーション固有のカーソルは
自動的に大きくならないため、表示スケールの変更に応じて
ロードし直す必要がありそうです。

現在のアイコンのサイズを調べる

標準のカーソルがどう大きくなるか、調べてみると、
125 % では変わらず、150 %、175 % で 1.5 倍になりました。

おそらく、50 % ごとに大きくなる仕様なのでしょう。
すなわち、dpi * 32 / 96 ってな式では計算できません。

このへんは、OS のバージョンによって挙動が変わりそうなので、
現在のマウスカーソルの大きさを取得できるとよいのですが
結論からいうと、あまりうまくいく方法が見つかりませんでした。

ま、しょうがないので、今のところ dpi から計算してます。
プログラムはこんな感じです。

if (dpi <= 96)
  return size;

int multi2 = ::MulDiv(dpi - 96, 2, dpi);
return size + multi2 * size / 2;

multi2 はサイズの増分の比率の 2 倍です。
0.5 単位で大きくなるので、0.5 が
整数の 1 になるように 2 倍してます。

サイズを指定してカーソルをロードする

.cur ファイルをリソースに用意して、
LoadImage にサイズを指定してロードしてみると、
何故か、指定のサイズよりも小さいカーソルとなりました。

Windows 10 に標準で入っている、cur ファイルを
パスに指定してロードした場合も、
同様に小さくなったので、
そういう仕様なのでしょう。

正直、意味不明なので、cur ファイルはあきらめて、
ico ファイルを読み込んで、カーソルに変換する方法をとりました。

アイコンを LoadImage でロードし、
GetIconInfo で取得した情報を編集し、
CreateIconIndirect に渡すと、カーソルを作成できます。

ICONINFO.fIcon には、FALSE を指定します。
ICONINFO.xHotspot、ICONINFO.yHotspot
でホットスポットを設定できます。

・・・

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

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

・・・

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

・・・

うーん、カーソル回りの仕様は、
意味不明なことが多すぎる。

どうなってんだーーー。

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


コメント
コメントする