• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 340
  • Last Modified:

Windows Metafile Madness

Ok here it goes... I have successfully dissected a Windows
Metafile. I have 2 questions that need to be answered in order for me to complete this Non-Windows C program. I have a nifty program that lists all the metafile records (functions and their arguments). For what I am doing, certain records are always the same (ie. I always incorporate a bitmap in my metafile so I always see the StretchDIB() GID function call in the .WMF dump). What I need to know is, What do I need to put as parameters in the Escape() functions and the StretchDIB function. Now I know the parameters are ALWAYS the same in the Escape() functions because their bit values are always the same. I don't know if this helps, but here is the values I always get when I dump a WMF file. From my testing, 2 bytes represent one number and the bytes are in reverse order (MSB then LSB)

Escape (34 bytes)
15   23   25922   26983   8302   24908   25977   144
0   7   24908   25977   8306   49

Escape (30 bytes)
15   20   24908   25977   8306   26966   26995   26978   26988   31092   0   1

Escape (20 bytes)
15   9   28229   8292   24908   25977   114

To get what I am showing you, I paste a .BMP file in Adobe Illustrator, export it as a Windows Metafile and view the list of records using a program called "listwmf.exe" from: www.CompanionSoftware.com

Since this program parallels a Windows C program, I may have to write a Windows C program instead that uses the Win32 GDI function calls instead of cutting and pasting their bits.

Now I need numbers for arguments in the StretchDIB() function since I am not writing a program, just manually creating the WMF from scratch.

If you cannot answer this, who can? And yes, I've already tried empire Microsoft.
0
jfoley053097
Asked:
jfoley053097
1 Solution
 
thomashellerCommented:
This is the entry for the StechDIBits Metafile Record from the Win31 help file, maybe this is what you need:

StretchDIBits Metafile Record

struct {
    DWORD rdSize;
    WORD  rdFunction;
    WORD  rdParm[];
}

Member      Description

rdSize      Specifies the record size, in words.
rdFunction      Specifies the GDI function number 0x0F43.
rdParm      Contains the following elements:

Element      Description

dwRop      Raster operation to be performed
Usag      Flag indicating whether the bitmap color table contains RGB values or indexes to the currently realized logical palette
srcYExt      Height of the source in the bitmap
srcXExt      Width of the source in the bitmap
srcY      Y-coordinate of the origin of the source in the bitmap
srcX      X-coordinate of the origin of the source in the bitmap
dstYExt      Height of the destination rectangle
dstXExt      Width of the destination rectangle
dstY      Y-coordinate of the origin of the destination rectangle
dstX      X-coordinate of the origin of the destination rectangle

BitmapInfo      BITMAPINFO structure
bits      Actual device-independent bitmap bits
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Protect Your Employees from Wi-Fi Threats

As Wi-Fi growth and popularity continues to climb, not everyone understands the risks that come with connecting to public Wi-Fi or even offering Wi-Fi to employees, visitors and guests. Download the resource kit to make sure your safe wherever business takes you!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now