home *** CD-ROM | disk | FTP | other *** search
- > TheBitmap.LoadFromResourceID(HInstance, IMAGE_BASE + i);
-
- >under Kylix, i get the error message:
- >
- >"EInvalidGraphicOperation: Image format not recognized. Process stopped
- >..."
-
- Yep.
-
- Try replacing the code in QGraphics with the piece below; as Jon
- indicates, some fixup is missing.
-
- This at least no longer throws an exception, but I don't know what this
- code is supposed to do.
-
- *************
-
- procedure LoadBitmapFromResourceStream(ABitmap: TBitmap; ResourceStream:
- TCustomMemoryStream);
- var
- TmpStream: TMemoryStream;
- Header: TBitmapFileHeader;
- BmpHeader: TBitMapInfoHeader;
- begin
- TmpStream := TMemoryStream.Create;
- try
- // Reads bitmap header
- ResourceStream.ReadBuffer(BmpHeader, SizeOf(BmpHeader));
- ResourceStream.Seek(0, soBeginning);
-
- // Builds file header
- FillChar(Header, SizeOf(Header), 0);
- Header.bfType := $4D42;
- Header.bfSize := ResourceStream.Size;
- Header.bfReserved1 := 0;
- Header.bfReserved2 := 0;
-
- if BmpHeader.biBitCount > 8 then
- Header.bfOffBits := sizeof(Header) + sizeof(BmpHeader)
- else
- if BmpHeader.biClrUsed = 0 then
- Header.bfOffBits := sizeof(Header) + sizeof(BmpHeader) + (1 shl
- BmpHeader.biBitCount) * 4
- else
- Header.bfOffBits := sizeof(Header) + sizeof(BmpHeader) +
- BmpHeader.biClrUsed * 4;
-
- // Concatenates both in TmpStream
- TmpStream.WriteBuffer(Header, SizeOf(Header));
- TmpStream.CopyFrom(ResourceStream, ResourceStream.Size);
- TmpStream.Position := 0;
- ABitmap.LoadFromStream(TmpStream);
- finally
- TmpStream.Free;
- end;
- end;
-
- procedure TBitmap.LoadFromResourceName(Instance: Cardinal; const
- ResName: string);
- var
- Stream: TCustomMemoryStream;
- begin
- Stream := TResourceStream.Create(Instance, ResName, RT_BITMAP);
- try
- LoadBitmapFromResourceStream(Self, Stream);
- finally
- Stream.Free;
- end;
- end;
-
- procedure TBitmap.LoadFromResourceID(Instance: Cardinal; ResID:
- Integer);
- var
- Stream: TCustomMemoryStream;
- begin
- Stream := TResourceStream.CreateFromID(Instance, ResID, RT_BITMAP);
- try
- LoadBitmapFromResourceStream(Self, Stream);
- finally
- Stream.Free;
- end;
- end;
-
- --
- NNQ - Quoting Style in Newsgroup Postings
- http://web.infoave.net/~dcalhoun/nnq/nquote.html
-