【MFC】リストビューをグレーアウトして無効表示させる

WindowsAPIのボタンを無効化すると灰色にグレーアウトしますが、リストビューを無効化してもグレーアウトしません。
この記事ではグレーアウトさせる一つの方法を紹介します↓

https://raw.githubusercontent.com/nai-kon/MFC-Grayedout-ListView/master/README_VIDEO.gif

 

 

処理の流れですが、CreateCompatibleDC・CreateCompatibleBitmapでリストビューと互換性のある描画オブジェクトを作成し、リストビューをキャプチャします。それをAlphaBlendで灰色に透過させ、WM_PAINT時にBitBltで表画面に転送しています。

つまり、無効状態時は実際のリストビューではなく「グレーアウトしたリストビューの画像」が表示されているという事です。
この状態ではリストに対するスクロール等の操作もできないため、リストの要素だけをグレーアウトさせたい場合はリストビューのオーナードローを検討してください。

 ↓ソースはGitHubにアップしています。

github.com