VC 在经典 MFC 框架下使用真彩色工具栏

VS2008 sp1 以后有了 BCG 的包,可以使用 CMFCToolbar 来加载真彩色工具栏。但是在经典 MFC 框架下,默认还只是 16 色的工具栏,通过下面的方法就可以加载真彩工具栏了。直接上代码:


// MainFrm.h
protected: 
    CToolBar        m_wndToolBar;
    CImageList      m_ilToolbarNormalImageList;
    CImageList      m_ilToolbarDisabledImageList;

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    // ...

    if (m_ilToolbarNormalImageList.Create(16, 15, ILC_COLOR24 | ILC_MASK, 8, 1))
    {
        CBitmap bmToolbarNormalBitmap;
        if (bmToolbarNormalBitmap.LoadBitmap(IDR_MAINFRAME_256N))
        {
            m_ilToolbarNormalImageList.Add(&bmToolbarNormalBitmap, RGB(235, 233, 237));
            m_wndToolBar.SendMessage(TB_SETIMAGELIST, 0U, reinterpret_cast<LPARAM>(m_ilToolbarNormalImageList.GetSafeHandle()));
            m_ilToolbarNormalImageList.Detach();
        }
        bmToolbarNormalBitmap.Detach();
        bmToolbarNormalBitmap.DeleteObject();
    }
    if (m_ilToolbarDisabledImageList.Create(16, 15, ILC_COLOR24 | ILC_MASK, 8, 1))
    {
        CBitmap bmToolbarDisabledBitmap;
        if (bmToolbarDisabledBitmap.LoadBitmap(IDR_MAINFRAME_256D))
        {
            m_ilToolbarDisabledImageList.Add(&bmToolbarDisabledBitmap, RGB(235, 233, 237));
            m_wndToolBar.SendMessage(TB_SETDISABLEDIMAGELIST, 0U, reinterpret_cast<LPARAM>(m_ilToolbarDisabledImageList.GetSafeHandle()));
            m_ilToolbarDisabledImageList.Detach();
        }
        bmToolbarDisabledBitmap.Detach();
        bmToolbarDisabledBitmap.DeleteObject();
    }

    // ...
}


注:

参考:http://www.docin.com/p-304303341.html




猜你喜欢

转载自blog.csdn.net/DavidHsing/article/details/36477291