ソフトを開発しようと思った動機、背景
本ソフトを公開する以前のことになりますが、「Alt」のつかない「ミコソフト画像ビューア(for Windows)」というソフトを08年の3月に公開しています。この画像ビューアは、JPEG/GIF/PNG/BMP画像の相互変換や拡大・縮小、アニメーションGIFのサイズ変換やフレーム画像取り出しといった画像変換機能を充実させたソフトだったのですが、画像をプレビューしたり、画像変換を行ったりするためには、画像フォルダをアプリケーションに登録する必要があり、またJavaの特性上、起動にも時間がかかるため、手軽に画像を閲覧するという用途には向かず、画像の閲覧にはもっぱらWindows標準の「画像とFAXビューア」を利用していました。しかし、「画像とFAXビューア」では、ウィンドウより小さい画像をウィンドウサイズに合わせて拡大することができない、画像間移動時にズーム倍率がリセットされる、複数ウィンドウの表示ができない、アニメーションGIFのフレーム単位閲覧ができない等、不満に思う点もありました。そこで、「画像とFAXビューア」の軽快さを持ち、かつ上記に掲げた不満を解消するビューアということで開発したのが、「ミコソフト画像ビューアAlt(オルタナティブ)」です。
開発中に苦労した点
本ソフトも他の作者さんが公開しているマルチウィンドウソフトと同様に、シングルインスタンス&マルチスレッドという仕様で複数のプレビューウィンドウを表示しているのですが、シングルインスタンスを実現するために必要な、二番目に起動されたインスタンスから画像ファイルのパス情報を最初のインスタンスに引き渡す機能と、渡された画像ファイルをプレビューするウィンドウのZオーダを先頭にして、かつフォーカスする機能の実装で苦労しました。
「Visual Studio」でWindowsアプリケーションを開発されている方にはご存知の方も多いと思うのですが、VB.netにはシングルインスタンス化オプションがあらかじめ備わっています。このオプションを利用すると、シングルインスタンス化と二番目のインスタンスから最初のインスタンスへの引数の引き渡しが簡単に実現できるのです。しかしながら、シングルインスタンス化オプションを利用した場合、最初のインスタンスのウィンドウをアクティブにすることが困難で、結果、二番目以降に表示されるウィンドウのZオーダを先頭にすることができなかったのです。
これでは、Windowsファイラと連携して、簡単かつ迅速に画像をプレビューするという基本用件を満たすことができません。やむを得ずVB.netのシングルインスタンス化オプションによる方法を諦めて、他の方法を模索した結果、ここはWindowsアプリケーションの基本に戻ろうと決心し、二番目のインスタンスのWindowロードイベントで多重起動チェックを行い、多重起動されている場合は、SetForegroundWindow APIを使用して最初のインスタンスをアクティブ化し、次いでSendMessage APIのWM_COPYDATAを使用して画像ファイルパスを最初のインスタンスへ渡す、という.net以前の方法で解決しました。
ユーザにお勧めする使い方
本ソフトでは、表示された画像をダブルクリックしたときの動作について、(1)ウィンドウ表示/最大化表示切り替え、(2)閉じる、(3)次画像・前画像表示、の3種類の動作から選択できるようになっていますが、(3)次画像・前画像表示に設定しておくのが、最も使いやすいと思います。また、できるだけ大きな画像で閲覧したい場合は、表示メニューで「ウィンドウに合わせて拡大縮小」を選択し、ウィンドウメニューで「タイトルとバーを非表示」を選択して、最大化すれば、画面いっぱいに画像が表示されます。あとは、表示された画像のダブルクリック、またはショートカットキーで画像間の移動を行ってください。
今後のバージョンアップ予定
直近のバージョンアップでは、現在、懸案となっている、ズーム処理時の基点をプレビューウィンドウ中央にする改善や、縮小時の画像品質の改善を行う予定です。その後の予定については未確定ですが、スライドショウトランジション、複数画像一括印刷、ショートカットキーカスタマイズ、編集アプリケーションの呼び出し等々の機能拡張を考えています。
そのほか、作者の気のついた点は随時改善してゆきますが、ユーザさまからのご要望やご提案等がありましたら、今後のバージョンアップの参考にさせていただきますので、どうぞ作者Eメールアドレスまでご連絡ください。
(MICOSOFT/TJIN)