ListViewの描画問題

ListViewでサムネイル表示をするために、LVS_ICONで カスタムドローを使っているけど、これには問題があることに気づいた。 例えばitemが3000個ある場合、スクロールさせて3000個目を表示したとする。 すると、再描画の度に、0-2999までのNM_CUSTOMDRAWが発…

MSBuild

beta1のとき、ConsoleLoggerのインデントが嫌いで、 自作Loggerを使っていたのだけど、beta2では使えない。 原因が分からないので、デバッグコードを挟んで再コンパイルしてみたら、 'Microsoft.Build.Framework.BuildEventArgs'に'Category'の定義がありま…

Visual Studio 2005 beta2

手に入ったのでインストールしてみた。 インストールにはとにかく時間がかかる。 あまりに時間がかかるので寝てしまった。 少し使ってみたけど、 beta1で気になっていたMSDNの表示速度が改善されている。 使い物にならないくらいの遅さだったので助かる。 こ…

新しい自作機

以前から自宅の機械が遅く感じていた。 Visual Studio2003が重すぎるし、コンパイルは結構待たされる。 それだけでなく、全体的にもっさり感がでてきた。 Visual Studio2005betaがとどめだったか? 欲しい時が買い時ってことで、新しいのを自作することにし…

バーレーン戦

仕事をほったらかして、観てしまったよ、やっぱり。 こういう特別な試合って、どうしても観たくなる。 今回勝てたことによって、W杯も観る楽しみが続きそう。 うちのテレビはダブルウィンドウなので、 横ではハリーポッターを見てる奴も居ましたが...。 …

再起動プログラム

SoftEther上でリモートデスクトップを使っているんだけど、 調子がおかしくなることがあまりに多い。 リモートデスクトップが繋がらなくなるなると、ホストの再起動が必要になる。 仕方なくpcAnywhereを入れて再起動しようとしたけど、 リモートデスクトップ…

縮小版(サムネイル)

表示の調整が面倒なので、適当だった縮小版の実装を進めた。 アップした画像はサムネイルサイズが48*48のもの。 ちゃんとアイコンも48*48のもを使っている。 もちろんサムネイルのサイズは調整可能。

ショートカット

フォルダのショートカットを実装していないことに気づき、 実装した。 簡単に実装できると思っていたけど、思っていたより手こずった。 調べるとIShellLinkとIPersistFileを使うらしいので、使ってみた。 しかし、フォルダのリンク切れに対して、エクスプロ…

アイコン

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++で試作してみる予定。