기존의 리소스는 그대로 두고 ToolBar에 사용할 256색 이상의 Bitmap Image List를 하나 만듬니다. 그리고 나서 CToolBarCtrl의 SetImageList(), SetHotImageList(), SetDisabledImageList()를 이용하면 간단히 256이상의 ToolBar를 만들 수 있습니다. 예제를 참고하세요.

 

 

void CToolBar256::SetBitmap(UINT nIDResource, CSize ImageSize, UINT nButton, COLORREF colMask)

{

    CImageList ToolBarImageList;

    CBitmap ToolBarBitmap;

    ToolBarBitmap.LoadBitmap(nIDResource);

    ToolBarImageList.Create(ImageSize.cx, ImageSize.cy, ILC_MASK | ILC_COLORDDB, nButton, 0);

    ToolBarImageList.Add(&ToolBarBitmap, colMask);

    GetToolBarCtrl().SetImageList(&ToolBarImageList);

    ToolBarImageList.Detach();

    ToolBarBitmap.Detach();

}



void CToolBar256::SetHotBitmap(UINT nIDResource, CSize ImageSize, UINT nButton, COLORREF colMask)

{

    CImageList ToolBarImageList;

    CBitmap ToolBarBitmap;

    ToolBarBitmap.LoadBitmap(nIDResource);

    ToolBarImageList.Create(ImageSize.cx, ImageSize.cy, ILC_MASK | ILC_COLORDDB, nButton, 0);

    ToolBarImageList.Add(&ToolBarBitmap, colMask);

    GetToolBarCtrl().SetHotImageList(&ToolBarImageList);

    ToolBarImageList.Detach();

    ToolBarBitmap.Detach();

}



void CToolBar256::SetDisabledBitmap(UINT nIDResource, CSize ImageSize, UINT nButton, COLORREF colMask)

{


   CImageList ToolBarImageList; CBitmap ToolBarBitmap; ToolBarBitmap.LoadBitmap(nIDResource);


   ToolBarImageList.Create(ImageSize.cx, ImageSize.cy, ILC_MASK | ILC_COLORDDB, nButton, 0);

   ToolBarImageList.Add(&ToolBarBitmap, colMask);

   GetToolBarCtrl().SetDisabledImageList(&ToolBarImageList);

   ToolBarImageList.Detach();

   ToolBarBitmap.Detach();

}

Posted by 명혀니
,