Example #1
0
//-------------------------------------------------------------------------------------
HBITMAP CMainFrame::CVistaMenuIcon::QueryIcon (UINT nID)
{
    std::map<UINT, FCObjImage*>::iterator   i = m_tab.find(nID) ;
    if (i != m_tab.end())
        return *i->second ;

    FCObjImage   * pImg = new FCObjImage ;
    pImg->LoadResource (nID, L"PNG", IMG_PNG) ;
    if (pImg->IsValidImage() && (pImg->ColorBits() == 32))
    {
        pImg->ApplyEffect (FCEffectPremultipleAlpha()) ;
    }
    m_tab[nID] = pImg ;
    return *pImg ;
}
Example #2
0
//-------------------------------------------------------------------------------------
void CMainFrame::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDIS)
{
    if (lpDIS && (lpDIS->CtlType == ODT_MENU))
    {
        FCObjImage   img ;
        img.LoadResource (lpDIS->itemID, L"PNG", IMG_PNG) ;
        if (img.IsValidImage())
        {
            if (lpDIS->itemState & ODS_DISABLED)
            {
                img.ApplyEffect (FCEffectGrayscale()) ;
            }

            std::auto_ptr<Gdiplus::Bitmap>   gb (img.CreateBitmap()) ;

            CRect   rc = FCObjGraph::CalcFitWindowSize (CSize(img.Width(),img.Height()), lpDIS->rcItem) ;
            Gdiplus::Graphics(lpDIS->hDC).DrawImage (gb.get(), rc.left, rc.top, rc.Width(), rc.Height()) ;
        }
        return ;
    }
    CMDIFrameWnd::OnDrawItem (nIDCtl, lpDIS) ;
}