My problem is that I want to draw some ownerdrawn controls on a GDI+ graphics surface.
My approach is:
1. I've declared a global object as:
2. I setup an empty bitmap with:Code:extern Gdiplus::Bitmap *pBmpOdElem;
3. I try to draw onto the bitmap using the pBmpOdElem pointer:Code:void createGdiplusObj(void) { pBmpOdElem = new Bitmap(50,50,PixelFormatDontCare); }
and nothings happens...Code:BOOL OwnDrawProc (WPARAM wparam, LPARAM lparam) { HBITMAP hBitmap = 0; LPDRAWITEMSTRUCT lpDrawItem = (LPDRAWITEMSTRUCT)lparam; int x = lpDrawItem->rcItem.top; int y = lpDrawItem->rcItem.left; Graphics gr(lpDrawItem->hDC); UINT uiSelect = lpDrawItem->itemState & ODS_SELECTED; ... pBmpOdElem->FromHBITMAP(hBitmap, NULL); gr.DrawImage (pBmpOdElem, x, y, pBmpOdElem->GetWidth(), pBmpOdElem->GetHeight()); }
My previous approach to the problem was creating a Bitmap object in the ownerdrawn procedure and draw it accordingly. This worked but I dont want to create a Bitmap object every time the painting routine gets called... it's not efficient.
Any help with managing those GDI+ ptrs?
thank you.
Hernan


Reply With Quote