KLARAでは、開かれた画像ウインドウのすべてがメインウインドウ内に子ウインドウとして表示される「SDIモード」と、
画像ごとに新しくKLARAを開く「MDIモード」、の両方をサポートしています。
環境設定「KLARA2」タブでSDIモード/MDIモードを切り替えられます。
「MDIモード」では、ファイラウインドウから画像ファイルをダブルクリックなどしてKLARAに表示させた場合、
ウインドウフォーカスはファイラウインドウから移動しません。
このことにより、次々とファイルを開くとき操作が容易になっています。
KLARAにはエクスプローラとほぼ同じ機能を持つHEIDIウインドウを備えています。
HEIDIからは画像を操作するショートカットコマンドが使用できます。
詳しくは「KLARA特有の操作方法」などを参照して下さい。
HEIDIでは、コンテキストメニュー・
ドラッグ&ドロップ・カット&ペーストなどの機能が実装されています。
HEIDIでは、キーボードコマンドを使うこともできます。
使用できるキーボードコマンドには次のものがあります。
詳しくはキーボードコマンドを参照してください。
アーカイブファイルを開くと、KLARAとは独立したアーカイブウインドウが開かれます。
アーカイブウインドウはエクスプローラに似た操作感でファイル操作が行えます。
アーカイブウインドウはそれぞれ独立したスレッドで動作しています。
unlha32.dll/unzip32.dll に代表される「統合アーカイバプロジェクト仕様」のアーカイバに対応しています。
現在は、LZH形式アーカイブ(unlha32.dll)、ZIP形式アーカイブ(unzip32.dll)、CAB形式アーカイブ(cab32.dll)
TARとその派生形式アーカイブ TAR / TGZ / tar.gz / TAZ / tar.Z / tar.bz2 / gz / z / bz2 (tar32.dll) に対応しています。
現在は、解凍のみのサポートになります。圧縮・削除には対応していません。
TZ/Z など一部のTAR派生形式では、正しくサイズを表示することができません。
一部のCABファイルは開くことができません。
各ファイラウインドウでは表示オプションの1つとして「サムネイル表示」が実装されています。
HEIDIやアーカイブウインドウで「サムネイル表示」を使うと、
エクスプローラでサムネイル表示を行っているような感覚で使用することが出来ます。
他のソフトでは通常サムネイル表示を、全く独自のそれ専用のウインドウで行うことが多いと思いますので、こういった実装は少数派だと思います。(単に趣味の問題と言うかも。)
HEIDIでサムネイルを作成するときには、サムネイルの作成はサムネイル作成ウインドウによりバックグラウンドで処理されます。
これにより、HEIDI操作中にサムネイル作成処理を特別に待つ必要がありません。
KLARAは各ウインドウを別スレッドで動作させています。これにより、一つのウインドウが処理中でも、他のウインドウは操作を妨げられません。
KLARAに内蔵されている画像プラグインは、マルチスレッドでの動作に対応しています。
内蔵プラグインで処理される場合には、プラグインへの同時アクセス制限がほとんど発生しません。
Jpeg/Tiff GetPicture() のみ同一スレッドからは1回しか呼べません。
BMP/PNG/(GIF) すべてのAPIは完全リエントライト
通常の外部プラグインはマルチスレッドでの動作保証がないため、同時アクセスを厳しく制限しています。
そのため、外部プラグインで操作している場合には、同時アクセス時にはスレッド間の待ち時間が長くなり、マルチスレッドとしての効果は減少します。
エラーメッセージを表示するためメッセージウインドウを装備しています。
このメッセージウインドウは、KLARA本体とは別のスレッドで動作していますので、
KLARA本体に障害があった場合でも、正常にメッセージを表示することができます。
また、KLARA内部で生成される各種のメッセージを確認できますので、動作に不具合があった場合でも、比較的状況をつかみやすいでしょう。たぶん。
連続処理中にプラグイン内でエラーが発生した場合、プラグインがメッセージボックスを表示するのを抑制することができます。
これにより処理途中になんどもOKボタンを押すようなことは避けられます。
ある画像をプラグインが展開中に、そのプラグイン内でエラーが発生したような場合、メッセージボックスが表示され、ユーザーにその旨を通知してきます。ここでユーザーはOKボタンを押すことを求められます。
サムネイル作成中にこういったエラーが複数発生すると、その都度ユーザーはメッセージボックスでOKを押さなければなりません。
この機能により、OKボタンを押す行為を省略することができます。(ユーザーは意識しないので気付きませんが)。
また、外部プラグインが MessageBox を表示した場合、オーナーウインドウが設定されておらず、この MessageBox を見失ってしまうことがあります。
KLARAでは MessageBox() をフックすることにより、MessageBox がかならずオーナーウインドウを持つようにしています。
一部有名プラグインで確認されている、LocalFree() に HLOCAL 以外のハンドルを渡すバグを検出し、表示することができます。(ただし、デフォルト設定では表示されません)。
一部プラグインで LocalAlloc() を呼ばず GlobalAlloc() を呼んでいるときに、その動作を強制的に LocalAlloc() を呼び出すように変更させます。