2005-05-01から1ヶ月間の記事一覧

アイコン

IExtractIcon::Extractを使っていると、XPのエクスプローラと同じにはできない。 xlsを48*48で描画しようとすると、32*32を引き伸ばしたものになる。 またアイコンのないexeはダミーのアイコンを取得できない。 SHGetFileInfoならばダミーのアイコンを取得で…

アイコン

今までSHGetFileInfoを使ってアイコンの情報を取得していたけど、 サムネイルのテスト実装をしている途中で、縮小版はSHGFI_LARGEICON(32*32)より 大きいアイコン(48*48)を使っていることに気づいた。 SHGFI_LARGEICONでは48*48は取得できそうにない。 やは…

縮小版(サムネイル)

縮小版のテスト実装を行った。 適当に記述したら、とりあえず動いた。 ただ、Thumbs.dbの挙動が良くわからない。 フラグでIEIFLAG_CACHEを設定しても、Thumbs.dbを生成しない。 いろいろ試してみると、エクスプローラを含む多くのファイラでThumbs.dbを 作ら…

一覧での属性表示

とりあえず実装してみた。 効率が悪い実装だけど、後で修正するつもり。

ListViewのソート

XPのエクスプローラで詳細表示のとき、ソートした列の色が 淡いグレーになる。 これを実装したくて探すが、キーワードが思いつかない。 仕方がないので、またまたCommCtrl.hを読む。 LVM_SETSELECTEDCOLUMN、ListView_SetSelectedColumnを使うらしい。 また…

2005-05-28に書いたソートの件

当初デスクトップの.lnkが上手くソートできなかったけど、 一旦別フォルダにコピーして戻すと、上手くソートできることが判明。

拡張子の分割描画

ListViewのLVS_LISTで拡張子の分割表示を実装した。 拡張子を分割するためには事前に描画領域を計算する必要があり、 さらに遅くなった。 それでも視認性が高まったので良しとする。 これで複数列でファイル属性も表示する形式の足がかかりができた。 あとは…

ソート

エクスプローラーのソートはIShellFolder::CompareIDsを使っているけど、 これでソートすると、こちらが期待した順にならない場合がある。 よってファイルは文字列でソートし、それ以外(フォルダなど)は CompareIDsで比較するというオプションを加えた。 …

タイルビュー

ListViewでTile Viewを使いたくて調べたけれど、見つからない。 仕方がないので、CommCtrl.hを調べて導出。XPからしか使えないけど。 // タイルビューにする ListView_SetView(hwnd, LV_VIEW_TILE); // タイルビューの情報を設定する LVTILEVIEWINFO tvi = …

フォルダの監視

FindFirstChangeNotification、ReadDirectoryChangesW、SHChangeNotifyRegisterの 三種類あると思うけど、FindFirstChangeNotification、ReadDirectoryChangesWは ごみ箱の監視ができないので却下。 とりあえず速度を見るために、スレッドを使わずに実装して…

拡張子

エクスプローラは拡張子が表示されないので、 これを拡張子の表示を選択ができ、拡張子ごとのソートをしたい。 とりあえず、拡張子を表示するようにだけした。 あと拡張子のみを右寄せで表示にしたい。

動的カラム

今まで固定でカラムを4つ表示していたので、マイ コンピュータでは コンピュータとネットワークの場所というカラムが表示されていた。 うちには切断されたネットワークコンピュータへのショートカットがあるので、 表示が毎回遅い。 エクスプローラはこの辺…

ごみ箱のソート

ごみ箱に4000個のファイルをセットし、IShellFolder::CompareIDsでソートをする。 通常のフラグ設定だと正確にソートできるが、異様に遅い。 そこでSHCIDS_CANONICALONLYを用いると、正確にソートできないが、速い。 数回計測してみると、使用しない場合は11…

細かいテストを繰り返しながら、shell namespaceの理解を深め中。 同時にソースも整理している。

バグの1つがやっと解決。 ネットワークコンピュータにつながらない場合、エラーメッセージが 表示されないというもの。 フロッピの場合はエラーメッセージがきちんと表示されているのに。 いろいろ試してわかったのだけれども、 IShellFolder::EnumObjectsの…

力ずく実装

昨日から時間がとれたので、一気に実装した。 骨組みとなる部分の当たりを付けたかったので。 もう少し丁寧に実装するつもりだったけど、仕事が忙しくて 結局このパターンになってしまった...。 最近はjavaとC#をいったりきたりだったので、C++は手が付い…

GWは遊んでいたので、今日から再開。 とりあえず以前から使っていたWindowsの私的ライブラリを整備中。

開発開始

現在使用しているファイラは、更新されなくなって久しい。 他のファイラを使う手もあるけれど、勉強がてら自作する方針。 どこまでできるかわからないけど。 とりあえずC++で試作してみる予定。