PRB: How to Work Around WMFDCODE 64K Limitation (94602)



The information in this article applies to:

  • Microsoft Windows Software Development Kit (SDK) 3.1

This article was previously published under Q94602
3.10 WINDOWS kbprg kbprb

SYMPTOMS

The sample application, WMFDCODE, supplied in the Windows 3.1 Software Development Kit (SDK) can only read metafiles that are less than 64K in size.

To work around this 64K limitation, add one line and modify two lines. In the file, WMFMETA.C, in the function RenderPlaceableMeta, add this line:
   long      lBytesRead;  // Number of bytes read.
				
Change the _lread function to _hread to allow the function to use HUGE pointers to read the file. Also, change the return value to lBytesRead so that it can accept a long value:
   /* read metafile bits */ 
   lBytesRead = _hread(fh, lpMem, (LONG)(mfHeader.mtSize * 2));
				
Next, change the if statement that compares the value returned from:
   if ( lBytesRead with -1 ) {
				
to the following line, which uses long values:
   /* if there was an error */ 
   if ( lBytesRead == -1L )  {
				

STATUS

This behavior is by design.

Modification Type:MinorLast Reviewed:2/11/2005
Keywords:kb16bitonly kbprb KB94602