YOU CAN CODE!

 

With The Case Of UCanCode.net  Release The Power OF  Visual C++ !   HomeProducts | PurchaseSupport | Downloads  
XD++ Library
DocVizor
TFC Library
Free Products
Technical Support
UCanCode.net


Get Ready to Unleash the Power of UCanCode .NET


UCanCode Software focuses on general application software development. We provide complete solution for developers. No matter you want to develop a simple database workflow application, or an large flow/diagram based system, our product will provide a complete solution for you. Our product had been used by hundreds of top companies around the world!

"100% source code provided! Free you from not daring to use components because of unable to master the key technology of components!"


MFC Library: CMetaFileDC

 
 

Introduction

 

A metafile is a series of instructions used to draw one or a group of graphics on a device context. Unlike drawing on a regular device context, a metafile includes its instructions in a normal windows file. The instructions are then used to draw what is necessary. One of the strengths of a metafile is that, because it is a Windows file, it can be accessed by any application that can read it. This means that you can create a metafile in your Visual C++ application and be able to open it in a graphics application like Paint Shop Pro.

Creating a Metafile

 

In Visual C++, a metafile can be created using the CMetaFileDC class. This class is based on CDC. For this reason, it inherits any type of drawing you can perform on a device context. This significantly reduces the amount of learning.

To start, you can declare a CMetaFileDC variable using its default constructor. Using this variable, call the Create() method to formally initiate the file. The syntax of the CMetaFileDC::Create() method is:

BOOL Create(LPCTSTR lpszFilename = NULL);

This methods takes an optional argument as the name of the file that will hold the instructions. If you don't supply the argument, a default file would be created. After calling the Create() method, you can perform any necessary drawing on the CMetaFileDC variable as you would proceed with a CDC object.

After using the CMetaFileDC variable, you should close it. This is done by calling the Close() method. Its syntax is:

HMETAFILE Close();

Here is an example:

void CMFCMetaFile1View::OnDraw(CDC* /*pDC*/)
{
	CMFCMetaFile1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: add draw code for native data here
	CMetaFileDC mfDC;

	mfDC.Create("Meta1.wmf");

	CBrush BrushGreen(RGB(0, 125, 5));
	CBrush BrushRed(RGB(255, 2, 5));
	CBrush BrushYellow(RGB(250, 255, 5));
	CBrush BrushBlue(RGB(0, 2, 255));
	CBrush *pBrush;
	
	CPoint Pt[3];

	// Top Triangle
	Pt[0] = CPoint(125,  10);
	Pt[1] = CPoint( 95,  70);
	Pt[2] = CPoint(155,  70);

	pBrush = mfDC.SelectObject(&BrushGreen);
	mfDC.Polygon(Pt, 3);

	// Left Triangle
	Pt[0] = CPoint( 80,  80);
	Pt[1] = CPoint( 20, 110);
	Pt[2] = CPoint( 80, 140);

	pBrush = mfDC.SelectObject(&BrushRed);
	mfDC.Polygon(Pt, 3);

	// Bottom Triangle
	Pt[0] = CPoint( 95, 155);
	Pt[1] = CPoint(125, 215);
	Pt[2] = CPoint(155, 155);
	
	pBrush = mfDC.SelectObject(&BrushYellow);
	mfDC.Polygon(Pt, 3);

	// Right Triangle
	Pt[0] = CPoint(170,  80);
	Pt[1] = CPoint(170, 140);
	Pt[2] = CPoint(230, 110);

	pBrush = mfDC.SelectObject(&BrushBlue);
	mfDC.Polygon(Pt, 3);

	mfDC.SelectObject(pBrush);
}

After creating a metafile, it becomes a regular Windows file:

You can open it in your application when necessary. Here is an example that opens the above metafile when the user clicks the view area of the application:

void CMFCMetaFile1View::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: Add your message handler code here and/or call default
	CClientDC client(this);
	HMETAFILE hMF = GetMetaFile("Meta1.wmf");
	client.PlayMetaFile(hMF);

	CView::OnLButtonDown(nFlags, point);
}

Of course, you can also provides the user with the ability to select a metafile to open using the File Dialog box. As mentioned already, a metafile can also be opened by any application that can read it. For example, here is the above metafile opened in Paint Shop Pro

 

 

Copyright ?1998-2005 UCanCode.Net Software , all rights reserved.
Other product and company names herein may be the trademarks of their respective owners.

Please direct your questions or comments to webmaster@ucancode.net