DIBCreateFromPTR Function |
Namespace: VOGUIClasses
1METHOD Start() CLASS App 2LOCAL oWin 3AS MyWindow 4LOCAL hf 5AS PTR 6LOCAL nSize AS INT 7LOCAL pDib 8AS PTR 9WCSetCoordinateSystem(WCWindowsCoordinates) 10InitializeCAPaint() 11hf := FOpen("test.jpg") 12IF hf != F_ERROR 13nSize := FSeek(hf, 0, FS_END) 14FSeek(hf, 0, FS_SET) 15pDib := MemAlloc(nSize) 16IF FRead3(hf, pDib, nSize) == nSize 17oWin := MyWindow{ SELF, pDib, nSize } 18oWin:Show(SHOWCENTERED) 19ENDIF 20FClose(hf) 21SELF:Exec() 22oWin:Axit() 23MemFree(pDib) 24ENDIF 25CLASS MyWindow INHERIT TopAppWindow 26PROTECT pBitMap AS PTR 27PROTECT lBitMap AS LOGIC 28CONSTRUCTOR(oParent, xFile, nSize) 29LOCAL pBmiH AS _WINBITMAPINFO 30LOCAL nHeight AS INT 31LOCAL nWidth 32AS INT 33LOCAL oPOint 34AS POINT 35LOCAL hWnd 36AS PTR 37LOCAL cx 38AS INT 39LOCAL cy 40AS INT 41LOCAL cr IS _WINRECT 42LOCAL wr IS _WINRECT 43SUPER:Init(oParent) 44SELF:QuitOnClose := TRUE 45IF IsPtr(xFile) .AND. IsNumeric(nSize) 46SELF:pBitMap := DIBCreateFromPtr(xFile, nSize) 47ENDIF 48IF pBitMap = NULL_PTR 49MessageBox(0, "Error reading image", "ERROR ", MB_ICONSTOP) 50ELSE 51SELF:lBitmap := .T. 52oPoint := SELF:Origin 53pBmiH := DIBGetInfo(pBitMap) 54nHeight := pBmiH.bmiHeader.biHeight 55nWidth := pBmiH.bmiHeader.biWidth 56hWnd := SELF:Handle() 57GetWindowRect(hWnd, @wr) 58GetClientRect(hWnd, @cr) 59cx := wr.right - wr.left - cr.right 60cy := wr.bottom - wr.top - cr.bottom 61SELF:Size := DIMension{nWidth + cx, nHeight + cy} 62SELF:Origin := oPoint 63ENDIF 64RETURN SELF 65 66METHOD Expose(oExposeEvent) 67SUPER:Expose(oExposeEvent) 68IF SELF:lBitMap 69DIBShow( SELF:pBitMap, NULL_PTR ) 70ENDIF 71DESTRUCTOR() CLASS MyWindow 72DIBDelete(SELF:pBitmap) 73END CLASS