我正在使用自定义绘图来尝试创建透明树视图(现在我正在测试启用视觉样式时)。
我的CDDS_PREPAINT
处理程序工作正常,树正确绘制了父级的背景位图。
我试图CDDS_ITEMPREPAINT
在我使用SetBkColor( ((LPNMCUSTOMDRAW)lParam)->hdc, TRANSPARENT );
和 return的地方添加处理程序CDRF_NEWFONT
,但失败了。节点使用默认的白色背景绘制。
如何使项目的文本背景透明?
谢谢你。
此致。
以下是说明性代码片段:
switch( ((LPNMCUSTOMDRAW)lParam)->dwDrawStage )
{
case CDDS_PREPAINT:
{
DrawThemeParentBackground(
((LPNMCUSTOMDRAW)lParam)->hdr.hwndFrom,
((LPNMCUSTOMDRAW)lParam)->hdc,
&((LPNMCUSTOMDRAW)lParam)->rc );
// since tree is in dialog box we need below statement
SetWindowLongPtr( hDlg, DWLP_MSGRESULT, (LONG_PTR)CDRF_NOTIFYITEMDRAW );
return TRUE;
}
break;
case CDDS_ITEMPREPAINT : // how to properly handle this ???
{
SetBkMode( ((LPNMCUSTOMDRAW)lParam)->hdc, TRANSPARENT );
SetWindowLongPtr( hDlg, DWLP_MSGRESULT, (LONG_PTR)CDRF_NEWFONT );
return TRUE;
}
break;
}