SDK-MFC 備忘録 |
Windows SDKやMFCに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)
2010/5/16 作成
MFC futurePackでMFCのクラスが追加されています。基本的にこれらはRibbonインタフェースのための追加ですが、いくつかのクラスは単独でも使用できます。その中のひとつとしてCMFCListCtrlクラスがあります。
このクラスを使用すると、リストのソート処理、行やセル単位の描画色の変更などが比較的簡単に行えます。従来のCListCtrlクラスで行おうとすると結構面倒です。
ひとまず、背景色、及び文字色を変更する手順をメモします。
使用方法は、
基本的には、これだけです。
実はメモしたい内容は、ここからです。上記の状態でリストを表示するとリストヘッダに関して2点問題があります。
まず、簡単な方から、2のソートマークはリソースエディタのプロパティ設定でNo Sort Header
をTRUEに設定するとクリックに反応しなくなります。
(ClistCtrlの場合はクリックだけでなくマウスオーバーにも反応しなくなります。)
次に、ヘッダの表示スタイルですがこれは、おそらくヘッダボタンにCMFCButtonクラスを使っているせいではないかと当たりを付けて、futureパックのVisualManagerの設定を追加するとビンゴ!でした。
プログラムの起動処理部分に、(通常はダイアログの場合、XXXAppクラスのInitInstance()にいれます。)
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
CMFCButton::EnableWindowsTheming();
の2行を追加します。
プログラムの終了で、
CMFCVisualManager::DestroyInstance();
とやらないと、メモリリークとなります。
※ただし、XXXAppクラスがCWinAppクラスでなくCWinAppExを継承している場合はDestroyInstance()でのオブジェクトの破棄は不要です。
CWinAppExクラスの終了処理でCMFCVisualManager::DestroyInstance();を呼び出しています。