ふぁいらあ開発日記

[DFって何?][日記][コマンド一覧][関連リンク][予定表][他のファイラー][逃げ帰る]

[トップを狙う]

2001年01月04日

ルートディレクトリでのルートに移動コマンド

何もしないように改良。

2001年01月10日

Ctrlキーでも頭文字検索を有効にすることを断念

設定がかなり繁雑になるので。

現在、Ctrl+?という形式のキーに機能がたくさん割り当てられているので、これらが使えなくなるのはかなり不便。コレだけの数になるとキーカスタマイズをしてくれ、というのもかなり無茶な気がする。

ショートカットキーの解釈をプログラミングしてやればいいのだけど、レスポンスの低下とサイズの肥大化が気になる。

2001年01月15日

起動時の表示項目を設定可能に

[OPT]にVIEW=設定値という形式で設定。

1ファイルサイズを表示
2タイムスタンプを表示
4ファイル属性を表示

数値は足すことで複数の項目を表示できて、3を指定するとファイルサイズとタイムスタンプの両方が表示される。

2001年01月17日

描画ルーチンのちょっとした見直し

あまり効果はみられれない。

起動時の表示項目設定のドキュメント化

ヘルプファイルに反映。

他にも、機能一覧に標準のキー割り当てを記載した。

コレで標準のキー割り当てを変更する時には

に加えて機能一覧も修正しなければならなくなる。

どれか一つくらい忘れそうだ。

書庫の中身

今に始まった事ではないけど、

ファイル名 元のサイズ 圧縮サイズ 割合
DF.EXE 86,528 43,105 21.89%
DFCUST.EXE 12,800 5,205 2.64%
DF.HLP 186,464 144,911 73.60%
README.TXT 8,299 3,675 1.87%
合計 294,091 196896 100%

とまあ、7割以上をヘルプファイルが占めている。もしヘルプファイルが無ければ書庫のサイズは50KB程度で済むことになるわけで、この方がサイズの面からはインパクトが高まるかもしれない。

2001年01月19日

キーが足りない

ワイルドカードで選択、というコマンドを付けようと思ったものの空いているキーが無い。

AからZまでの26個とCtrlを押しながらの26個で52個しか無いところでDFのショートカットコマンドは95個もある。

EnterとCtrl+Mのような同じ機能を割り当てているキーもあるのが敗因かもしれない。

特訓の隠しコマンド入力ルーチンを流用して2ストロークキーなんかを実装したほうがいいのかも。

4ストロークまでに限定したらDWORDで判定できるからもっと簡単にできる気がする。PKとかPPPKとかPPP↓K→Pとかが使えるようになるわけだ。

あっバッキービット考慮してない。DWORDで判定できるのは2ストロークまでか。

2001年02月02日

SSTP使用版作成

せっかくだから、SSTP利用版DFを作成。

こんなことしている暇があったらヘルプファイル書け、という話があるわけだがこれ以上先に延ばしてもネタが風化してしまうだけなので勢いで作業。

本当は文字列リソースにしたほうがいいんだろうけど。

SSTP未使用版とソースは共通。

どうせなら、こういう余計な機能を付けたバージョンと並行開発というのはどうだろう。次に付けるのはコンテキストメニューとか。

文字コード変換

テキストビューアで使用している文字コード変換ルーチンをアセンブラで書き直す。

あまり意味は無かった。

2001年02月04日

カスタマイザのバグ修正

ウィンドウ位置記憶オプションについて、INIファイルを読み込んでいながら、書き込む処理をすっかり忘れているというクソマヌケなミス。

テストしたつもりでもまるでなっちゃいないというのが定説。

2001年02月09日

カスタマイザ修正

フォントの設定もできるようにしつつある。テスト中。

あと表示項目(OPTのVIEW)についても設定できるように項目追加。

描画ルーチン

なんか誤動作しそうな予感がする記述を見付ける。

2001年02月15日

コンテキストメニュー

せっかくだからコンテキストメニューを付けてみる。あれ? うまく動かない? メニューは出てくるんだけどおかしい…。

開く(O)を選択するとダウンロードしようとか言ってくるし。んがー。前やった時と何が違うんだろう…。

2001年02月21日

コンテキストメニュー

動くようになる。IShellFolderをカレントディレクトリのものを使うところでデスクトップのIShellFolderを使っていたのが敗因。

このままだとNT3.5では動かないような気がする。

2001年02月24日

カスタマイザ修正

やっと手をつける。

2001年02月26日

NT3.5対応

DFの改造。NT3.5にないAPIをダイナミックバインドに変える。サイズが増えたが、とりあえず魔法をかける。

起動速度改善

ダイナミックバインドにするついでにSHELL32.DLLとOLE32.DLLを起動時にロードしないようにする。必要になるまでロードを遅延させる。

Pentium 200MHzのマシンではこのDLLのロードに100msくらいかかるので、2つあわせて0.2秒くらい速くなるハズ。

呼び出し形式が食い違う

OLE32.DLLからダイナミックリンクした関数の呼び出し形式が__fastcallになってしまった。

なんか動かないなあ、と思ってデバッグビルドすると動いてしまったりして。

リリースビルドにしてアセンブルコードを読んだら__stcallになるべきところが__fastcallになっていることが判明。

とりあえずヘッダファイルから関数の宣言部をコピーして関数ポインタを宣言してみると、ヘッダファイルのマクロにしっかりと extern とか __declare(dllimport) なんてあったりして関数ポインタとして使い物にならない。

なんか嫌な予感がしつつもマクロを手作業で展開して HRESULT __stdcall という形で宣言する。解決。

2001年02月28日

ヘルプ修正

がんばってがんばってがんばって書く。

いまだに「登録コマンドは26個まで登録できる」というような記述があったりした。

カスタマイザの記述を更新。ダイアログの図を今使っているものにして、ホットスポットを付けた。

ビットマップビューアの挙動を変更

複数の画像を開いている時にビューアを閉じるとフォーカスが

  1. ビットマップビューア(1枚め。閉じる)
  2. 本体
  3. ビットマップビューア(2枚め。閉じない)

という感じで一瞬だけ本体にフォーカスが移動している。気に入らないので修正する。

キーボードドロップしたウィンドウがアクティブにならないバグの修正

26日に行ったNT3.5対応の時に、ShowWindowAsync()をShowWindow()に変えておいたのだけど、そうするとドロップした後のShowWindow()が無効化されていた。多分、Windows 95だと動く、というパターンなんだろう。

別の手段でアクティブにするように仕組む。

2001年03月01日

ウィンドウ位置記憶、復元

タスクバーの位置によってズレる問題を解消。GetWindowPlacement()で位置を取得しているのだからSetWindowPlacement()で設定したほうがいいんだろうけど、work placeの原点座標でずらしておく。

実行ファイルサイズ

86,528バイト。

2001年03月06日

Susieプラグインを見付けることができないバグ

Susieプラグインを検索する時に、最初に画像展開用以外のプラグインを見付けると次のプラグインを探しに行かずに画像の展開ができないモノとあきらめてしまうバグを修正。

キーカスタマイザ

コンテキストメニューをキーアサインできるように修正。

キーカスタマイザ つぅ

キー定義が既に定義されている状態でキー定義ファイルを読み込むと内部バッファと表示が食い違うバグの修正。

以前は読み込みボタンが無かったので最初に初期化したらそれでOkだったのだけど、読み込みボタンを追加したのだから読込時にも初期化しなければならなかったのだ。

2001年03月08日

クラッシュ

原因不明。再現性無し。

2001年03月09日

ネットワーク検索

ネットワーク検索時に、サーバコンテナやドメインコンテナが空だった場合にはすぐさまキャンセル扱いでダイアログを閉じていたのをやめて、空のダイアログを表示するように変更。

以前、空のダイアログを表示するくらいなら最初から表示しない方がマシだと思ってこのような仕様に変更したのだけど、イキナリダイアログが閉じるとちょっと驚く。

ネットワーク検索時にもユーザ認証を行うように仕様変更。

2001年03月10日

HeapAlloc()で死ぬ?

「作業中」という感じで表示しているウィンドウ、アレを表示する時にHeapAlloc()で作業用のメモリを分捕るんだけど、この時にHeapAlloc()の中で死ぬことがある。

なんで?

というか、どういうタイミングで死ぬのか原因がさっぱりわからない。

この現象が出る時はWZ Editorもおかしくなっているのでなにか複合的な問題なのかもしれない。

遅延検索

ディレクトリの更新があった時に、頻繁に更新し続けるのを回避するために更新後一定期間は更新しないようにしている。

今までこの処理が

タイマー停止 表示の更新
作業中 - -
時間未経過 更新あり - -
更新なし - -
時間経過 更新あり
更新なし -

だったのを

タイマー停止 表示の更新
作業中 - -
時間未経過 更新あり - -
更新なし -
時間経過 更新あり
更新なし -

にしようと思う。

更新が無かった時に、更新があるまでいつまでもタイマーが動きつづけてしまうのだ。

こういう図を書くとちょっとは解りやすくなるので資料が残り続けるのは助かる。

2001年03月13日

クラッシュ解決 か?

再現するパターンを見つけたのでワトソン博士に調べてもらう。

エディタ起動時に、メモリオーバーランすることがある箇所を発見。

補完計画

ディレクトリ変更ダイアログ、などのダイアログにファイル名補完機能などを追加。

ダイアログ 補完機能 登録ディレクトリ 貼り付け
カレントディレクトリ変更 ディレクトリ補完 あり なし
コピー先の指定 ディレクトリ補完 あり なし
移動先の指定 ディレクトリ補完 あり なし
マスク指定 なし なし なし
ファイル名の変更 なし なし なし
複数ファイル名の変更 なし なし なし
ファイル名の変更(リトライ) なし なし なし
ファイル名を指定して実行 パラメータ補完 なし なし
書庫作成 ディレクトリ補完 あり なし
書庫展開 ディレクトリ補完 あり なし
ファイル検索 なし なし なし
ディレクトリ作成 ディレクトリ補完 あり なし
ファイル作成 ファイル名補完 あり あり
ショートカット作成 ディレクトリ補完 あり なし
ワイルドカード検索 なし なし なし

2001年03月20日

更新遅延

更新遅延が場合によって掛かり過ぎて更新して欲しいタイミングでも遅延してしまうことがあるのを解決。

遅延させている間に、表示の更新がかかるような操作(複写、削除)などを行っても表示の更新を遅延していた。

この場合はすぐに表示を更新してくれた方がうれしい。

キーカスタマイズにEscキーを追加

うっかりしててEscキーを登録するのを忘れていた。指摘されるまで全然気付かないとか言う。

ついでにApplicationキーも追加。

2001年04月03日

SSTPの使用ポート

SSTPで使うポートって変更されていなかったっけ? Webで公開されている文書を見るとまだ11000のままのようだけど。

せっかくだからDF.INIの[SSTP]のPORTでポート番号を指定できるようにする。

2001年04月20日

キー定義変更

ワイルドカード選択のキーアサインを「Ctrl+U」から「*」に変更。

ファイル名変更時の名前入力欄の文字数制限

ファイルのリネームとワイルドカード選択のダイアログで使用している入力用テキストボックスに入力文字数の制限があったため、長いファイル名に変更できないなどの不具合を修正。

2001年04月26日

ディレクトリの圧縮

ディレクトリを圧縮しようとするとルートディレクトリから圧縮してしまうバグ。

UNLHA32.DLLに渡すコマンド文字列の編集を間違っていた。

A -r2x "ディレクトリ名\*.*"

とするつもりが、\*.*を追加する場所を間違っているため

A -r2x \*.*

になっていた。いつからだろう。

要は編集した時にポインタをずらすのを忘れていたのだな。

で、初めて気付いたんだけけど、LHA.EXEでも LHA A arc ディレクトリ\ で丸ごと圧縮できるのね。*.*要らないじゃん。

2001年05月09日

Winsock

DF with SSTPはws2_32.libとリンクしていたため、winsock2環境でないと動作しなかった。そのためWindows 95では動作しない。wsock32.libとリンクし直す。

DirectSSTPに切り替えたほうがいいかも。

ゴミ箱

ゴミ箱を使用しての削除機能をコーディング。

ゴミ箱送りにするファイル名一覧をつくるのが面倒そうだったので次のバージョンアップまで先送りにしようと思っていたのだけど、よく考えるとファイル名をクリップボードにコピーするという処理をちょっと変更するだけでうまくいくことに気がついた。

で実装。動作確認。Ok。

これでゴミ箱を利用した削除ができるようになったのでキーカスタマイザの方にもコマンドを追加しなければならない。

ゴミ箱送りの方法はこれでいいと。ゴミ箱を空にして完全にファイルを削除する方法も解った。

さて、ゴミ箱からゴミを拾ってくるにはどうしたらいいんだ? ShellNameSpaceと格闘しないとダメか? CでCOMしろと。それはイヤだ。

いや、COMで呼び出すだけならいいんだけど。COM自体はショートカットの作成とかコンテキストメニューとかでいじっているし、特訓ではDirectXをCで使っていたりするし。

DnDみたいなこっちでもCOMオブジェクトを作ってごにょごにょしないといけないようなら勘弁して欲しい。

[DFって何?][日記][コマンド一覧][関連リンク][予定表][他のファイラー][逃げ帰る]

[トップを狙う]

mailメールはこちらCopyrigiht © 2001 びい(@nifty ID:RXA01732)