Pregunta

Tengo una clase CMFCToolBar -derived y un seguro de ello es el miembro de una clase CDockablePane -derived.

Miré el ejemplo de VisualStudioDemo para ver cómo se hace y tener esto hasta ahora:

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;
}

Se carga la imagen de alto color (24 bits) pero la máscara magenta (R255 G0 B255) es visible. No veo cómo puedo decirle a la barra de herramientas que reconozca la máscara.
¿Es esto posible?

¿Fue útil?

Solución

No sé si esto funciona siempre, pero uso RGB (192, 192, 192) como el color de la máscara y se reconoce.

(Parece que el control CMFCToolBar está preparado para usar :: GetSysColor (COLOR_BTNFACE) como el color transparente ...)

Otros consejos

Acabo de descubrir que una solución es usar imágenes de 32 bits junto con su canal alfa. Intenté usar una imagen de 32 bits antes, pero no conseguí que funcione por alguna otra razón y luego pensé que las imágenes de 32 bits no funcionarían.

Si desea usar imágenes de 32 bits, no use CBitmap en su lugar use ATL :: CImage o CPNGImage object y cargue el correspondiente < code> ID de recurso .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top