WindowsXPの詳細ビューのソート済みハイライトはLVM_SETSELECTEDCOLUMNが出してんのか


黒背景の妨げとなり、邪魔以外の何者でもないソート済みカラムのハイライトは、LVM_SETSELECTEDCOLUMNが出しているらしい。
http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/ab04d7d4-2be9-47b8-a9cb-376c8bb86761

んで、このメッセージは wParam でカラムを指定する。 0 から開始して -1とかだと何もハイライトしないらしい。
http://www.geoffchappell.com/viewer.htm?doc=studies/windows/shell/comctl32/controls/listview/background.htm

つまり、 SendMessage で LVM_SETSELECTEDCOLUMN -1 するようにすればokということ。

SendMessage(Explorerの listview , LVM_SETSELECTEDCOLUMN , -1 , 0);

ためしに、↓にソースが公開されているアプリを改造して、
http://www.codeproject.com/KB/files/TrayProdder.aspx

こんな風にしたら、忌々しいハイライトが消えた!!

private const int LVM_SETSELECTEDCOLUMN = ( LVM_FIRST + 140 );
SendMessage ( ( System.IntPtr ) hList
, LVM_SETSELECTEDCOLUMN,
-1,
0 );

と、いうわけで、仕組みがわかったので、プログラムに組み込んでみた。

バイナリ
http://rtilabs.net/files/2009_08_20/TrayProdder1.1_plus.zip
ソース
http://rtilabs.net/files/2009_08_20/TrayProdder_1.1_src.zip

このプログラムは、TrayProdder を rti が勝手に変更して作ったものです。
オリジナルは↓になります。
http://www.codeproject.com/KB/files/TrayProdder.aspx

ライセンスは、CPOLでお願いします。
http://www.codeproject.com/info/cpol10.aspx


windows explorer detail view sorted column color off software とか書いとくと外人もgoogle できてくれるかなぁ