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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top