ObjectARX
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

how to use AcdbBlockTableRecord::getPreviewIcon()

1 REPLY 1
Reply
Message 1 of 2
Anonymous
549 Views, 1 Reply

how to use AcdbBlockTableRecord::getPreviewIcon()

Hi,

 I have the following doubts.

 How to display the Block Preview in MFC DialogBox?

 how to use getPreviewIcon() method of AcdbBlockTableRecord?

Thanks In Advance

Sivasankarirajesh

1 REPLY 1
Message 2 of 2
maisoui
in reply to: Anonymous

HI,

 

You can use something like this:

 

HDIB_ getHDib(LPVOID pDibSrc)
{
	LPBITMAPINFOHEADER pbmih = (LPBITMAPINFOHEADER)pDibSrc;
	//*iWidth = pbmih->biWidth;
	//*iHeight = pbmih->biHeight;
	DWORD totalSize = pbmih->biSize + pbmih->biSizeImage + (DWORD)getPaletteSize((LPSTR)pbmih);

    HANDLE hdib = GlobalAlloc(GHND, totalSize);
    LPVOID pDibDst = GlobalLock(hdib);

    CopyMemory(pDibDst, pDibSrc, totalSize);

    GlobalUnlock(hdib);
    
	return (HDIB_)hdib ;
}

HBITMAP getHBitmapFromDib(HANDLE hdib, HPALETTE hpal)
{
    LPBITMAPINFOHEADER  lpbi;
    HPALETTE            hpalT;
    HDC                 hdc;
    HBITMAP             hbm;

    if (!hdib)
        return NULL;

    lpbi = (LPBITMAPINFOHEADER)GlobalLock(hdib);

    if (!lpbi)
        return NULL;

    hdc = GetDC(NULL);

    if (hpal){
        hpalT = SelectPalette(hdc,hpal,FALSE);
        RealizePalette(hdc);     // GDI Bug...????
    }

    hbm = CreateDIBitmap(hdc,
                (LPBITMAPINFOHEADER)lpbi,
                (LONG)CBM_INIT,
				(LPSTR)lpbi + lpbi->biSize + getPaletteSize((LPSTR)lpbi),
                (LPBITMAPINFO)lpbi,
                DIB_RGB_COLORS );

    if (hpal)
        SelectPalette(hdc,hpalT,FALSE);

    ReleaseDC(NULL,hdc);
    GlobalUnlock(hdib);
    return hbm;
}

AcDbBlockTableRecord::PreviewIcon previewIcon;
if(pBlockRecord->getPreviewIcon(previewIcon) == Acad::eOk)
{
	HBITMAP hBitmap = getHBitmapFromDib(getHDib((LPVOID)previewIcon.asArrayPtr()), NULL);
	//...
}

 

And do what you want with the HBITMAP.

 

Regards,

--
Jonathan

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost