Pergunta

I têm uma classe derivadas CMFCToolBar e um insance dos mesmos é o membro de uma classe de derivados de CDockablePane.

Eu olhei para a amostra VisualStudioDemo para ver como ele é feito e ter este até agora:

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

A imagem de alta cor (24 bits) é carregado, mas a máscara magenta (R255 G0 B255) é visível. Não vejo como posso dizer a barra de ferramentas para reconhecer a máscara.
Isto é mesmo possível?

Foi útil?

Solução

Eu não sei se isso funciona cada vez, mas eu uso RGB(192, 192, 192) como a cor da máscara e ele não se reconheceu.

(Parece que o controle CMFCToolBar está preparado para uso ::GetSysColor(COLOR_BTNFACE) como a cor transparente ...)

Outras dicas

Eu só descobri que uma solução é usar 32bit imagens juntamente com o seu canal alfa. Eu tentei usar uma imagem de 32 bits mais cedo, mas não fazê-lo funcionar por algum outro motivo e imagens de 32 bits, em seguida, figuraram não vai funcionar.

Se você quiser usar imagens de 32 bits não usar CBitmap vez usar ATL::CImage ou CPNGImage object e carga correspondente resource ID.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top