実現したいこと
- 仮想リストコントロールで特定行の背景色を変えたいです。
前提
Visual Studio 2019、MFCアプリケーションを作成しています。
通常のリストコントロールで行っていた物を仮想リストコントロールに変更しようとしています。
通常のリストコントロールでは特定行の背景色を変更することができていましたが、仮想リストコントロールへ変更してから背景色の変更ができません。
1.リストコントロールのプロパティから所有者データをTRUEへ変更(オーナードローをTUREへ)
2.「NM_CUSTOMDRAW」を呼び出し、以下のソートを実装
VC++
1void CXXXXXX::OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult) 2{ 3 NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); 4 5 if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage) 6 { 7 *pResult = CDRF_NOTIFYITEMDRAW; 8 } 9 else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage) 10 { 11 if (条件を指定) 12 { 13 pLVCD->clrTextBk = m_colActive; 14 } 15 16 *pResult = CDRF_DODEFAULT; 17 } 18 19 *pResult = 0; 20}
この実装しているコードで、通常リストコントロールは背景色の変更ができました。
しかし、仮想リストコントロールへ変更後の動作では、最初の「if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage)」へ入った後に、下の「else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)」へ入らなくなっています。
これは、オーナードローへ変更したことで、「NM_CUSTOMDRAW」が使えなくなっているということでしょうか?
「NM_CUSTOMDRAW」が使用できない場合に、特定の行の背景色を変更する方法はあるのでしょうか?
通常リストコントロールと仮想リストコントロールでの背景色の指定方法の違いについて、教えて頂きたいです。
回答1件
あなたの回答
tips
プレビュー