CListCtrlの選択範囲のスタイル / CListCtrlのちらつきを抑える

投稿日: 2005年05月23日 更新日: 2017年07月22日

CListCtrlの選択範囲のスタイル

選択範囲のスタイルはマニフェストファイル(.manifest)によって設定できるらしい。

実行したアプリケーション

http://www.codeproject.com/cs/miscctrl/listviewxp.asp

XP Visual Styleの適用方法

http://www31.ocn.ne.jp/~yoshio2/vcmemo8-1.html

追記:あれ?なんか.manifest作っただけじゃだめぽ。.NET使えばいいのか、拡張スタイルの設定が必要なのか、はたまた最新のSDKが必要なのか・・・。

追記:SetExtendedStyle(LVS_EX_DOUBLEBUFFER)でできるようになった。

CListCtrlのちらつきを抑える

CListCtrlの選択範囲のスタイルが気になったのは、元々次の理由からだった。

  • リストコントロールにファイル/フォルダ一覧を表示させたところ、選択範囲が画面外にはみ出したときに発生するスクロールで項目がちらつく。(オーナーデータを使っているせいか?)
  • おそらくリストコントロールを使っているであろうエクスプローラの画面ではちらつかない上に選択範囲がなんかかっこいい。

で、LVS_EX_DOUBLEBUFFERを使ったところ、ちらつき問題と選択範囲のスタイルが両方とも解決した。

ちなみにhttp://www.codeproject.com/cs/miscctrl/listviewxp.aspによると

In Windows XP, there is an extended-style called LVS_EX_DOUBLEBUFFER. This is what we want. Unfortunately it is only available for Common Controls version 6, which means we need Windows XP as well as a manifest file (or embedded resource). Additionally there is a style called LVS_EX_BORDERSELECT which tells the ListView (in Large Icon mode) to highlight the border of the icon rather than to paint over it (This is available with Common Controls version 4.71, so this will work without XP).

らしいので、残念ながらWindows XP以降でしか使えない上にmanifestファイルは結局必要となる。

LVS_EX_BORDERSELECTはXPでなくても動くようだけど、今は特に必要ないかも。

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ