1
這裏是代碼的摘錄。工具欄的 樣式創建之前:Windows :: toolbar :: NM_CUSTOMDRAW。更改工具欄背景顏色
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應該是下一個。
顯示您對SetClassLong的調用,因爲如果您沒有正確連接控件(「超級分類」)(如您的帖子所示),則您的消息處理程序代碼不應該被調用.... – johnathon 2013-03-09 00:32:57