Сабж.
Гружу картинку так:
uses
Windows, Messages, ActiveX
const
IID_IPicture : TGUID = '';
var
gpPicture : IPicture = NIL;
PicFileName : String = 'pic.gif';
procedure LoadPictureFile(Name : String);
var
aFile : HFILE;
pstm : IStream;
pvData : Pointer;
dwBytesRead : DWORD;
dwFileSize : DWORD;
Global : HGLOBAL;
i:longint;
begin
aFile := CreateFile(PChar(Name), GENERIC_READ, 0, NIL, OPEN_EXISTING, 0, 0);
if aFile = INVALID_HANDLE_VALUE then
Exit;
dwFileSize := GetFileSize(aFile, NIL);
if dwFileSize = -1 then
Exit;
pvData := NIL;
Global := GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
if Global = 0 then
begin
CloseHandle(aFile);
Exit;
end;
pvData := GlobalLock(Global);
if pvData = NIL then
Exit;
dwBytesRead := 0;
if not ReadFile(aFile, pvData^, dwFileSize, dwBytesRead, NIL) then
Exit;
GlobalUnlock(Global);
CloseHandle(aFile);
pstm := NIL;
if CreateStreamOnHGlobal(Global, True, pstm) <> S_OK then
Exit;
if pstm = NIL then
Exit;
if Assigned(gpPicture) then
gpPicture := NIL;
if OleLoadPicture(pstm, dwFileSize, False, IID_IPicture, gpPicture) <> S_OK then
begin
pstm := NIL;
Exit;
end;
GlobalFree(Global);
pstm := NIL;
end;
Теперь ее надо сохранить в файл BMP. Как?
Знаю, что это кажется делается ф-цией OleSavePictureFile, но как именно?!