Click here to Skip to main content
15,895,084 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Dynamically Creating code and executing it Pin
2-Jan-02 9:28
suss2-Jan-02 9:28 
GeneralRe: Dynamically Creating code and executing it Pin
Rick York2-Jan-02 11:31
mveRick York2-Jan-02 11:31 
GeneralRe: Dynamically Creating code and executing it Pin
Carlos Antollini2-Jan-02 9:20
Carlos Antollini2-Jan-02 9:20 
GeneralRe: Dynamically Creating code and executing it Pin
Roger Wright (new)2-Jan-02 16:33
Roger Wright (new)2-Jan-02 16:33 
GeneralRe: Dynamically Creating code and executing it Pin
Todd Smith2-Jan-02 18:02
Todd Smith2-Jan-02 18:02 
GeneralCImageList & Replace with bitmap mask Pin
2-Jan-02 6:07
suss2-Jan-02 6:07 
GeneralRe: CImageList & Replace with bitmap mask Pin
Ernest Laurentin2-Jan-02 7:08
Ernest Laurentin2-Jan-02 7:08 
GeneralRe: CImageList & Replace with bitmap mask Pin
2-Jan-02 8:00
suss2-Jan-02 8:00 
Yes, I do a SetImageList after the Replace(s). Sorry, I somehow left that out of the code snippet that I posted. The snip should be something like this:

void CSomeView::OnSomeEvent(...)
{
...
m_imagelist.Replace(iSomeIndex, pBM, pbmpMask);
GetTreeCtrl().SetImageList(m_pImageList, TVSIL_NORMAL);
GetTreeCtrl().Invalidate();
}

I'm messing with some code right now that generates a mask from the image that is being inserted into the imagelist. I'm having a little taste of success, but darn I wish that Replace() just would let me send a COLORREF instead of a CBitmap mask.

My mask generation looks like this. It works for the first image, but not subsequent, so still having some problems. Do you see my error(s)?

void CSomeView::OnSomeEvent(...)
{
...
CBitmap *pMask = GetMask(pBM);
m_imagelist.Replace(iSomeIndex, pBM, pMask);
GetTreeCtrl().SetImageList(m_pImageList, TVSIL_NORMAL);
GetTreeCtrl().Invalidate();
}

CBitmap *CSomeView::GetMask(CBitmap *pImage)
{
HBITMAP hbmMask = NULL;
BITMAP bm;

// get bitmap size info
pImage->GetBitmap(&bm);

// Create memory DCs to work with.
HDC hdcMask = ::CreateCompatibleDC(NULL);
HDC hdcImage = ::CreateCompatibleDC(NULL);

// Create a monochrome bitmap for the mask.
hbmMask = ::CreateBitmap(bm.bmWidth, bm.bmHeight,
1, 1, NULL);

// Select the mono bitmap into its DC.
HBITMAP hbmOldMask = (HBITMAP)::SelectObject(hdcMask,
(HBITMAP)hbmMask);

// Select the image bitmap into its DC.
HBITMAP hbmOldImage = (HBITMAP)::SelectObject(hdcImage,
pImage->m_hObject);

// Set the transparency color to be the top-left pixel.
// ::SetBkColor(hdcImage, ::GetPixel(hdcImage, 0, 0));

// force transparency color
::SetBkColor(hdcImage, RGB(192,192,192));

// Make the mask.
::BitBlt(hdcMask, 0, 0, bm.bmWidth, bm.bmHeight,
hdcImage, 0, 0, SRCCOPY);

// Tidy up.
::SelectObject(hdcMask, hbmOldMask);
::SelectObject(hdcImage, hbmOldImage);
::DeleteDC(hdcMask);
::DeleteDC(hdcImage);

CBitmap *pBM = new CBitmap();
pBM->Attach(hbmMask);

return pBM;
}

Thanks for your reply.
GeneralRe: CImageList & Replace with bitmap mask Pin
Ernest Laurentin2-Jan-02 11:26
Ernest Laurentin2-Jan-02 11:26 
GeneralRe: CImageList & Replace with bitmap mask Pin
3-Jan-02 1:39
suss3-Jan-02 1:39 
GeneralRe: CImageList & Replace with bitmap mask Pin
Ernest Laurentin3-Jan-02 5:16
Ernest Laurentin3-Jan-02 5:16 
GeneralSkinStyle (no MFC) error: undefined reference to... Pin
Kuniva2-Jan-02 5:18
Kuniva2-Jan-02 5:18 
Generaldraw lines in a CRichEditCtrl Pin
jafrazee2-Jan-02 5:11
jafrazee2-Jan-02 5:11 
GeneralMoving and Resizing Tool Tip (CToolTipCtrl) Pin
GurGur2-Jan-02 4:30
GurGur2-Jan-02 4:30 
GeneralMultiple documents dialog box Pin
FredrikB2-Jan-02 4:09
FredrikB2-Jan-02 4:09 
GeneralVis Studio won't start add-ins Pin
2-Jan-02 3:45
suss2-Jan-02 3:45 
GeneralRe: Vis Studio won't start add-ins Pin
Lim Bio Liong2-Jan-02 17:05
Lim Bio Liong2-Jan-02 17:05 
GeneralEdit Control Pin
Ray Kinsella2-Jan-02 2:38
Ray Kinsella2-Jan-02 2:38 
GeneralRe: Edit Control Pin
Ernest Laurentin2-Jan-02 4:06
Ernest Laurentin2-Jan-02 4:06 
GeneralCReBar Pin
2-Jan-02 1:40
suss2-Jan-02 1:40 
GeneralRemoving ToolBar & Menu Pin
2-Jan-02 0:24
suss2-Jan-02 0:24 
GeneralRe: Removing ToolBar & Menu Pin
Brian V Shifrin2-Jan-02 0:41
Brian V Shifrin2-Jan-02 0:41 
GeneralRe: Removing ToolBar & Menu Pin
2-Jan-02 1:06
suss2-Jan-02 1:06 
GeneralRe: Removing ToolBar & Menu Pin
Philip Patrick2-Jan-02 0:48
professionalPhilip Patrick2-Jan-02 0:48 
GeneralProblem with CListCtrl Pin
Paresh Solanki2-Jan-02 0:01
Paresh Solanki2-Jan-02 0:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.