gpt4 book ai didi

c++ - Windows::工具栏::NM_CUSTOMDRAW。更改工具栏背景颜色

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:04 26 4
gpt4 key购买 nike

这是代码的摘录。工具栏创建前的样式:

DWORD styles = TBSTYLE_FLAT | WS_CHILD  | TBSTYLE_TOOLTIPS; //| TBSTYLE_CUSTOMERASE;//| WS_BORDER ;
DWORD cc_styles = CCS_VERT | CCS_NODIVIDER | CCS_NORESIZE;

处理 NM_CUSTOMDRAW:

    case WM_NOTIFY:
switch ( ((LPNMHDR)lparam)->code )
{
...
case NM_CUSTOMDRAW:
{
//LPNMHDR header_ptr = safe_ptr_cast< LPNMHDR >( &lparam );
//if ( header_ptr->hwndFrom == m_ptr->get_operation_tab_toolbar_handle( ) )
LPNMTBCUSTOMDRAW data_ptr = (LPNMTBCUSTOMDRAW) lparam;
switch(data_ptr->nmcd.dwDrawStage)
{
case CDDS_ITEMPREPAINT:
SetWindowTheme(m_ptr->get_operation_tab_toolbar_handle(), _T(""), _T(""));
//data_ptr->hbrMonoDither = GetStockBrush(BLACK_BRUSH);
SetBkColor( data_ptr->nmcd.hdc, RGB(0,0,0));
FillRect( data_ptr->nmcd.hdc, &data_ptr->nmcd.rc, RGB(0,0,0));
//FillRect( data_ptr->nmcd.hdc, &data_ptr->nmcd.rc, GetStockBrush(BLACK_BRUSH));
return CDRF_NEWFONT;
case CDDS_PREPAINT:
{
return CDRF_NOTIFYITEMDRAW;
}
}
}
}

我只收到 CDDS_PREPAINT。在文档中 MSDN Custom Drawing Doc.据说在返回值上 CDRF_NOTIFYITEMDRAW CDDS_ITEMPREPAINT 应该是下一个。

最佳答案

当工具栏是使用样式 TBSTYLE_FLATE 或 TBSTYLE_TRANSPARENT 或 TBSTYLE_TRANSPARENT 创建时,它使用父背景颜色。因此,要为工具栏实现不同的背景颜色,应该为父窗口使用 SetClassLongPtr(为了 32x 和 64x 兼容性)。这样问题就解决了。

关于c++ - Windows::工具栏::NM_CUSTOMDRAW。更改工具栏背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15305304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com