Appendix C OLE File Formats

Note: The following information is for developers who choose to implement OLE into their applications without using the OLE libraries (DLLs), or who want to manipulate the private data format of OLE objects, such as for special buffering. File format information is given for applications that run in the Microsoft Windows graphical environment as well as the on the Macintosh computer.

OLE files on the Macintosh store pictures in PICT format while OLE files under Windows store picture objects as metafiles or in some other Windows format. When the OLE DLLs read a foreign file format, they ignore the foreign presentation data of the object and substitute a standard icon as a place holder.

If the platform reading the file has a server application available that reads the particular class of object, it can recreate the picture. However, if the file containing the OLE picture is used on a platform that does not support the server application's class, the picture will not be available and cannot be activated or edited. Using the private data format, a client application can translate PICT format to metafile format, or metafile format to PICT format.

The DLLs perform the minimal conversion necessary when reading OLE objects on one platform that were written on the other. Where numbers are written by the libraries, the Macintosh numbers are byte-swapped to mimic the Intel convention. Native data formats are hidden from the libraries, so no conversion is applied to native data. Standard presentation formats (PICT, Metafile, and so on.) will convert, but an application cannot depend on anything more accurate than frame bounds for the picture.

The stream layout of embedded or linked objects contain presentation objects, which can be Standard (Windows: metafile, bitmap, or DIB; Macintosh: PICT), Generic, or NULL objects. The client DLL completely supports the standard presentation objects including the drawing. Neither the client application (nor the object handler, if present) have access to these presentation objects; they exist only for the OLE client DLL.