我有一个CMFCToolBar
派生类,其内容是CDockablePane
派生类的成员。
我查看了VisualStudioDemo示例,看看它是如何完成的并且到目前为止已经完成了这个:
int CMyPane::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// Removed all "return -1 on error" code for better readability
CDockablePane::OnCreate(lpCreateStruct);
if(m_toolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_MY_TOOLBAR) &&
m_toolBar.LoadToolBar(IDR_MY_TOOLBAR, 0, 0, TRUE /* Is locked */))
{
if(theApp.m_bHiColorIcons) // Is true, i.e. following code is executed
{
m_toolBar.CleanUpLockedImages();
m_toolBar.LoadBitmap(IDB_MY_TOOLBAR_24, 0, 0, TRUE /*Locked*/);
}
m_toolBar.SetPaneStyle(m_toolBar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
m_toolBar.SetPaneStyle(m_toolBar.GetPaneStyle() & ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));
m_toolBar.SetOwner(this);
// All commands will be routed via this control , not via the parent frame:
m_toolBar.SetRouteCommandsViaFrame(FALSE);
}
return 0;
}
加载高色图像(24位)但可见品红色蒙版(R255 G0 B255)。我看不出如何告诉工具栏识别面具 这甚至可能吗?
答案 0 :(得分:3)
我不知道这是否每次都有效,但是我使用RGB(192, 192, 192)
作为蒙版颜色,它确实被识别出来。
(好像CMFCToolBar控件准备使用::GetSysColor(COLOR_BTNFACE)
作为透明色......)
答案 1 :(得分:0)
我刚刚发现一种解决方法是将32位图像与alpha通道一起使用。 我之前尝试过使用32位图像,但由于某些其他原因没有让它工作,然后认为32位图像不起作用。
答案 2 :(得分:0)
如果您想使用32位图片,请不要使用CBitmap
而是使用ATL::CImage
或CPNGImage object
并加载相应的resource ID
。