Domanda

Ho una classe CMFCToolBar e un'assicurazione relativa è il membro di una classe CDockablePane .

Ho guardato l'esempio di VisualStudioDemo per vedere come è stato fatto e farlo finora:

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

L'immagine a colori (24 bit) viene caricata ma la maschera magenta (R255 G0 B255) è visibile. Non vedo come posso dire alla barra degli strumenti di riconoscere la maschera.
È anche possibile?

È stato utile?

Soluzione

Non so se funziona sempre, ma uso RGB (192, 192, 192) come colore della maschera e viene riconosciuto.

(Sembra che il controllo CMFCToolBar sia pronto per usare :: GetSysColor (COLOR_BTNFACE) come colore trasparente ...)

Altri suggerimenti

Ho appena scoperto che una soluzione alternativa consiste nell'utilizzare immagini a 32 bit insieme al loro canale alfa. Ho provato a utilizzare un'immagine a 32 bit in precedenza, ma non l'ho fatto funzionare per qualche altro motivo e poi ho pensato che le immagini a 32 bit non funzionassero.

Se vuoi usare immagini a 32 bit non usare CBitmap invece usa ATL :: CImage o oggetto CPNGImage e carica < codice> ID risorsa .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top