Wie mache ich ein CMFCToolBar Bildmasken erkennen?
-
22-07-2019 - |
Frage
Ich habe eine CMFCToolBar
abgeleitete Klasse und ein insance davon ist das Mitglied einer CDockablePane
abgeleiteten Klasse.
schaute ich auf der VisualStudioDemo Probe, um zu sehen, wie es gemacht und haben diese so weit:
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;
}
Die Hochfarbbild (24-Bit) wird geladen, aber der Magenta-Maske (R255 G0 B255) sichtbar ist. Ich sehe nicht, wie ich die Toolbar sagen kann, um die Maske zu erkennen.
Ist das überhaupt möglich?
Lösung
Ich weiß nicht, ob dies funktioniert jedes Mal aber ich benutze RGB(192, 192, 192)
als Maske Farbe und erkannt bekommt.
(Scheint, wie die CMFCToolBar Kontrolle hergestellt wird ::GetSysColor(COLOR_BTNFACE)
als transparente Farbe zu verwenden, ...)
Andere Tipps
ich gerade herausgefunden, dass eine Abhilfe 32-Bit-Bilder zusammen mit ihrem Alpha-Kanal zu verwenden ist. Ich habe versucht, früher ein 32-Bit-Bild verwenden, aber nicht bekommen es aus einem anderen Grund zu arbeiten, und dann dachte 32bit Bilder wird nicht funktionieren.
Wenn Sie 32-Bit-Bilder verwenden, verwenden Sie keine CBitmap
statt ATL::CImage
oder CPNGImage object
verwenden und laden resource ID
entspricht.