Windows API を使用してアプリを作成していて、マルチカラーのテキストを含むサブアイテムを含むリストビューを作成する方法を知りたいと思っていました。
明確にするために、API Monitor での実装方法の図を次に示します。
「API」列では、リッチ テキストなどのように、テキストに複数の色があることに注意してください。私はこれをどのように行うのか疑問に思っていました。
誰かが私にカスタム描画で何かをするように言ったが、彼は確信が持てなかった. 私はそれを調べて、私は対処しNM_CUSTOMDRAW
ました。これが私のテストの結果です:
コードは次のとおりです。
inline LRESULT HandleWM_NOTIFY(LPARAM lParam)
{
switch (((LPNMHDR)lParam)->code)
{
case NM_CUSTOMDRAW:
{
switch (((LPNMHDR)lParam)->idFrom)
{
case ID_LISTVIEW1:
{
LPNMLVCUSTOMDRAW lpNMLVCD = (LPNMLVCUSTOMDRAW)lParam;
if (lpNMLVCD->nmcd.dwDrawStage == CDDS_PREPAINT)
{
return CDRF_NOTIFYITEMDRAW;
}
else if (lpNMLVCD->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
{
COLORREF crText;
switch (lpNMLVCD->nmcd.dwItemSpec % 3)
{
case 0:
crText = RGB(255, 0, 0);
break;
case 1:
crText = RGB(0, 255, 0);
break;
case 2:
crText = RGB(0, 0, 255);
break;
}
lpNMLVCD->clrText = crText;
lpNMLVCD->
}
return CDRF_DODEFAULT;
}
default: break;
}
break;
}
default: break;
}
return 0;
}
このNM_CUSTOMDRAW
方法を使用すると、個々の文字のフォントの色を変更できません。サブアイテムのすべてのフォントの色を変更することしかできませんが、これは私が望んでいるものではありません。
API モニターが行うことをどのように達成できますか? これは非常に難しいと思いますが、何か提案があれば歓迎します。