2016年4月30日土曜日

マウスホイールの操作がアクティブなウィンドウに働く仕様だった理由

先日、なぜマウスホイールの操作はアクティブなウィンドウに送られる仕様だったんだろうということを書きましたが、ちょうど The Old New Thing にその理由が書かれていました。

Why are mouse wheel messages delivered to the focus window instead of the window under the mouse?

一言で言えば、「ホイールは Ctrl キーなどと一緒に使われることがあるから」だそうです。

ホイール操作は当初ズーム機能を想定して開発されていたものが、スクロールに使った方が便利だろ、ということで通常はスクロール、Ctrl キーを押しながらだとズームという感じで使われるようになりました。
そのようにキーと一緒に使う場合、ホイール操作をフォーカスのあるウィンドウに送らないと不都合があったようです。

キーボードの入力は、キューイングされてフォーカスのあるウィンドウに送られます。
元々ホイールが開発された時、その機能は OS ではなくヘルパープログラムによって実現されていました。
このヘルパープログラムからキー入力のキューにアクセスする方法がなかったために、キー入力との整合性が取れるようにフォーカスのあるウィンドウにホイール操作が送られる仕様になったようです。

後にホイールを扱う機能が OS に取り込まれこの問題は解決できるようになりましたが、今までの挙動を変えないようにということで、そのままになっていました。
それが Windows 10 になってようやく変更されたというわけですね。

2016年4月16日土曜日

WheelMagic を GitHub で公開

以前から公開しているソフトですが、マウスホイールの操作をカーソルの下のウィンドウに適用するプログラム WheelMagic のリポジトリを GitHub に作成しました。
リポジトリのアドレスは https://github.com/iooiau/WheelMagic です。

Windows 10 からはデフォルトでその動作になったため不要になっていますが、なぜ最初からそうしなかったのか…。
しかし Windows 10 ユーザーが前の挙動に戻す方法を聞いているのを見掛けるので、そちらの方がいいという人もいるんですよね。
使いづらい仕様だと思うのですが。

他にも昔書いたプログラムを GitHub で公開したいなと思いつつ、改めてソースを見てみると「こんなんじゃ公開できない…(してるけど)」という部分が多いですね。
しかし今更書き直すモチベもなかなか湧きません。最早使ってないソフトばかりですし。

WheelMagic のソースも今回 GitHub で公開するにあたって整えましたが、Visual Studio 2005 の入っている環境を起動するのが面倒だったので、ビルドできるか確認していません。
多分大丈夫のはず…。

2016年4月3日日曜日

Connection Viewer ver.0.1.1 を公開

2年前にリポジトリを1つ作っただけで放置していた GitHub ですが、Connection Viewer のリポジトリを追加しました。

ついでに多少の修正を行って ver.0.1.1 として公開しました。

ダウンロードは Connection Viewer のリポジトリリリースページからできます。

2015年7月5日日曜日

PictureFan ver.0.32.0 を公開

PictureFan の ver.0.32.0 を公開しました。
ダウンロードはこちらから。

今回の更新内容は以下の通りです。

  • 書庫用の Susie Plug-in に対応した
  • Susie Plug-in の使用優先度を設定できるようにした
  • x64 版で 7-zip64.dll / tar64.dll / unrar64j.dll を利用できるようにした
  • 初期スクロール位置を設定できるようにした
  • ファイル切り替え時にスクロール位置を維持する設定を追加した
  • JPEG のメタデータを削除する機能を追加した
  • 作業領域の壁紙の設定を「表示」から「インターフェース」に移動した
  • libpng を 1.6.17 に更新した
  • 映像/音声を書庫から開いた際に一時ファイルの削除に失敗する不具合を修正
  • フォルダ履歴から開く際に、フィルタのリストに「全てのファイル」のみしか表示されない不具合を修正

2015年4月19日日曜日

PictureFan ver.0.31.2 を公開

PictureFan の ver.0.31.2 を公開しました。
ダウンロードはこちらから。

今回は不具合修正がメインです。更新内容は以下の通りです。

  • 統合アーカイバで SetUnicodeMode が利用できる場合は利用するようにした
  • Susie プラグインの埋め込みプロファイルがピクセルデータの後にある場合に対応した
  • 文字入力が行えなくなっていた不具合を修正
  • 全画面表示が行えなくなっていた不具合を修正
  • 全画面表示時にメニューの「閉じる」が機能しない不具合を修正
  • WIC での読み込み時に内部エラーが出ることがある不具合を修正
  • 書庫ファイルを開いた際にステータスバーのファイルの順序が表示されない不具合を修正
  • 書庫内のファイルを切り替えた時テンポラリファイルが履歴に追加される不具合を修正
  • tar32.dll 利用時にフリーズする不具合を修正
  • PNG 形式の保存時に最適化が有効な場合、「32ビット画像の透過ピクセルの色をゼロクリアする」と「無彩色のみの RGB 画像をグレイスケールで保存する」の設定が正常に反映されない不具合を修正
  • マルチモニタ時に各種ダイアログがプライマリモニタに表示される不具合を修正
  • その他細かい修正

ここのところリファクタリングを多く行っていたのですが、ひどいエンバグをしてしまっていました。
不具合の報告をくださった方、ありがとうございます。

2015年2月19日木曜日

BMPの埋め込みICCプロファイル確認用プログラム

前のエントリーのコメントで気になったので、ICC プロファイルが埋め込まれた BMP 画像を表示するテストプログラムを作成してみました。
ICCProfileTest.zip
このプログラムでは、BMP ファイルにプロファイルが埋め込まれていた場合、描画時にヘッダとパレットの後にプロファイルを付加して、SetDIBitsToDevice / StretchDIBits を呼び出しています。

読み込めるのは非圧縮の BMP 形式のみで、ウィンドウにファイルをドロップすると読み込んで表示します。
ウィンドウを左クリックすると ICM の On/Off を切り替え、右クリックすると等倍表示と縮小表示を切り替えます。

このプログラムでこちらにあるテスト用画像を、プロファイルを埋め込んだ BMP に変換して表示すると、以下のようになりました。

ICM Off
ICM On
ICM On (XP)

ICM を Off にすると青で、On にすると赤で表示されています。
WCS プロファイル非対応の XP では緑に表示されます。
いずれも期待通りの表示です。

2015年2月15日日曜日

PictureFan ver.0.31.1 を公開

PictureFan の ver.0.31.1 を公開しました。
ダウンロードはこちら http://www.geocities.jp/iooiau/picturefan.html から。

今回は以下の更新を行いました。

  • コマンドラインオプションで /thumbnails-only と /max が指定されている場合、サムネイルのウィンドウを最大化するようにした
  • Susie プラグインからの埋め込み ICC プロファイルの読み込みに対応した
  • Vista 以降では新しく関連付けの設定を行えないようにした
  • アプリケーションマニフェストに対応 OS の指定を追加した
  • BMP/PNG 形式の ICC プロファイルが読み込まれなくなっていた不具合を修正
  • PictBear のプラグインフォルダにフィルター以外のプラグインがある場合、プラグインのキャッシュが利用されない不具合を修正
  • キャプチャ時にレイヤードウィンドウがキャプチャされない不具合を修正

Susie プラグインからの埋め込み ICC プロファイルの読み込みは、簡単に対応可能だったので対応しましたが、 現時点で公開されているプラグインで ICC プロファイルを埋め込むものは恐らくありませんので、 もしかしたら何か問題のある可能性もあります。

関連付けの設定に関しては、元々 Windows 98 や 2000 を使っていた頃に実装したもので、 現在では既に時代遅れとなっていますので、Vista 以降では新しく関連付けを行えないようにしました。