• C

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.
jfoley053097Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C

From novice to tech pro — start learning today.