Solved

Windows Metafile Madness

Posted on 1997-07-22
1
319 Views
Last Modified: 2008-02-26
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
Comment
Question by:jfoley053097
1 Comment
 

Accepted Solution

by:
thomasheller earned 200 total points
Comment Utility
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

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were small…
This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
The goal of this video is to provide viewers with basic examples to understand opening and writing to files in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now