« ファイルを開くダイアログでフォルダも開く | トップページ | VC7でコマンドラインでソリューションをビルドする。(VC6でMakefile生成の代替手段) »

2006年1月21日 (土)

仮想リストビューのカラム幅の自動調節

オーナードローリストビュー(ひょっとしたら仮想リストビューかも)でヘッダーの区切り(ディバイダー)をダブルクリックしてカラム幅を自動調節しようとすると、仮想リストではなく、実リストビューの中身を見に行って、中身が何もなくて、幅がほぼ0になってしまう。

そこでHDN_DIVIDERDBLCLICKで正しい幅に設定してやろうとするとできるのだが、いったん幅0になった後に設定したサイズになる。つまり幅0になるのをHDN_DIVIDERDBLCLICKだけではとめられない。散々調べた範囲ではこれはまともにはとめようがない。

が、たとえば要素が0個とか1個のリストビューでカラム幅自動調節をしようとすると一瞬幅0になるものの、すぐに指定のサイズになる。そこで自動調節時にオーナードローを一時停止させればいったん幅が0になっているのがわからないくらい高速に自動調節できる。

そのためにはリストビューのヘッダーコントロールをサブクラス化し、WM_LBUTTONDBLCLKが来たらオーナードローを一時停止して、HDN_DIVIDERDBLCLICKで幅を設定する直前にオーナードローを再び再開するようにすればよい。

|

« ファイルを開くダイアログでフォルダも開く | トップページ | VC7でコマンドラインでソリューションをビルドする。(VC6でMakefile生成の代替手段) »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/61222/972668

この記事へのトラックバック一覧です: 仮想リストビューのカラム幅の自動調節:

« ファイルを開くダイアログでフォルダも開く | トップページ | VC7でコマンドラインでソリューションをビルドする。(VC6でMakefile生成の代替手段) »