Print Preview without the Doc/View Architecture

Environment: VC6 SP3, NT4 SP5, Windows 2000 Beta 3

This code allows you to make use of the MFC print preview architecture without using the document/ view architecture. This is accomplished by overriding some key functions from the MFC CView class and CPreview class. I have introduced two new classes with the required overrides called CWrapperView and CMyPrintPreview. I will explain how to integrate these classes into a new MFC project created without the use of the document/ view architecture.

Create a new MFC project without the document view architecture. Add WrapperView.cpp, WrapperView.h, and MyPreview.h to your project.

Open the ChildView.h file and include the header file WrapperView.h. Now change the parent class to CWrapperView and add the DECLARE_DYNCREATE macro to the class.


	class CChildView : public CWrapperView
	{
		DECLARE_DYNCREATE(CChildView)
		:
		:
		:
	}

Open MainFrm.h and change


	ChildView m_wndView;

To


	CChildView  *m_pView;

Open MainFrm.cpp and remove the following code from the OnCreate function


	if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
	CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
	{
		TRACE0("Failed to create view window\n");
		return -1;
	}

And replace it with


	CCreateContext context;
	context.m_pNewViewClass = RUNTIME_CLASS(CChildView);
	context.m_pCurrentFrame = this;
	context.m_pCurrentDoc = NULL;
	context.m_pLastView = NULL;

	m_pView = STATIC_DOWNCAST(CChildView, CreateView(&context));
	if(m_pView != NULL)
	{
		m_pView->ShowWindow(SW_SHOW);
		SetActiveView(m_pView);
	}

Use the class wizard to add command handlers for ID_FILE_PRINT and ID_FILE_PRINT_PREVIEW to CMainFrame and edit the new functions to...


	void CMainFrame::OnFilePrint() 
	{
		m_pView->OnFilePrint();
	}

	void CMainFrame::OnFilePrintPreview() 
	{
		m_pView->OnFilePrintPreview(this);
	}

OnFilePrintPreview has been overriden to take a pointer to the owner frame (in this case CMainFrame) as this is needed in the overriden DoPrintPreview function. The defualt implementation uses AfxGetMainWnd() but sometimes we don't want to use the main window we want to use another frame window derived from CFrameWnd

Open ChildView.cpp and add the following code


	void CChildView::OnFilePrint()
	{
		CView::OnFilePrint();
	}

	IMPLEMENT_DYNCREATE(CChildView, CWrapperView)

Now add a command handler to the CChildView message map


	ON_COMMAND(ID_FILE_PRINT, OnFilePrint)

Open ChildView.h and add


	public:
		void OnFilePrint();

We have to add this overide for the OnFilePrint function because the default implementation in CView is protected and seeing as we need to invoke it from our frame window (CMainFrame, in the File Print Command Handler) we have to make it public in our derived view and then call the default implementation.

Now use the class wizard to add an OnDraw function to your view class and add code to call OnDraw from OnPaint.


	void CChildView::OnPaint() 
	{
		CPaintDC dc(this); // device context for painting
		
		OnDraw(&dc);

		// Do not call CWnd::OnPaint() for painting messages
	}

Now all that remains is to add some code to your OnDraw function.


	OnDraw(CDC *pDC)
	{
		CRect client;
		GetClientRect(&client);
		client.DeflateRect(50, 50);
		CBrush brush(RGB(255, 0, 0));
		pDC->FillRect(&client, &brush);
	}

The same process needs to take place if you have derived a class from CFrameWnd and want to add MFC print preview support to it. The only difference is that you have to do a bit more work by creating the view class yourself.

Downloads

Download demo - 8 Kb
Download source - 21 Kb


Comments

  • ¿Dónde puedo comprar el más barato ghd

    Posted by ewdvws795 on 07/17/2013 10:49am

    La ciudad industrial del siglo XIX y la construcción de puertos, el rápido desarrollo económico, la convierten en la segunda mayor ciudad del país, Aarhus es una ciudad comercial Jutlandia, Noruega y Dinamarca también se conectan otros medios de transporte de la ciudad hub.Clean y hermosa ciudad de Aarhus, el paisaje rural de Europa, El edificio formado número de único e innovador bygninger.fordi diseño de su ubicación geográfica y los residentes locales entusiastas culture.Aarhus amor siempre ha sido el centro cultural de Jylland.Vores línea planchas ghd para la venta, la cerámica lineal, muy bueno para proteger tu cabello se ve muy buena resistencia al calor. Rápidamente se calienta, en el transcurso de 2-3 minutos para alcanzar la temperatura deseada. Voltaje seguro, fácil de usar que en cualquier país. La plancha de pelo ghd es el más barato. Tenemos una amplia gama de productos y colores. Si te gusta, por lo que comprar lo correcto. [url=http://planchaspeloghd.cabanova.com/]planchas ghd baratas[/url] Incluso tengo un hecho BABYLISS yo hago una buena capa con una línea de rotación correspondiente al control de la temperatura y la deficiencia de la hormona del crecimiento performance, peeeero su tambor redondo es un dolor y el costo real, por lo que las olas o el pelo rizado ... La diferencia es comprobar en el último Hoy en día, fui a mi habitual estilista y le pregunté su cabello ondularan y eliminar un déficit de hormona de crecimiento (GOLD modelo Classic), fue una verdadera sorpresa al ver lo cómodo que parece utilizar la velocidad de la rapidez final, un resultado muy profesional . [url=http://planchas-ghd.manifo.com/ ]Comprar GHD Planchas[/url] Todavía puedo utilizar mi loción para después frívola, peluquería, pero es tan increíblemente suave. En general, estoy muy impresionado. Compre personas ghd baratas que no tienen mucho dinero, por lo que es tensa, su cartera, puedo decir que es totalmente la pena el dinero! No me devolvieran mi dinero, a prueba de humedad, también he escuchado una buena protección térmica GHD (proteger plancha de pelo, secador de pelo, y creo que cuesta unos 15 euros, pero evite el abuso excesivo del cabello.

    Reply
  • Prøver Ã¥ plukke den beste flatt jern eller glattejernet kan være skremmende

    Posted by pletcheribf on 06/14/2013 04:17pm

    [url=http://ghdrettetangtilbud.webgarden.com/]ghd rettetang norge[/url] GHD Christmas Limited Edition gave Set inneholder alt edelt må du opprette imponerende sesongbestemte mønstre. Boksen utsøkt er å finne den perfekte gaven under treet. Du vil finne i boksen for gave: sølv og svart ghd rettetang Billige IV stylingjernet og hårføner Voyage presenteres i en vakker bag glitter opprulling metall roller lukket med en svart satin slips. Både stylingjernet og hårtørrer i sin egen individuelle Varmebestandig flyttbare med glidelås er perfekt for helgen ekstra feiring. Glamorøse roll posen også dobler som en nyttig Varmebestandig overflate for stil trygt på veien. [url=http://www.rettetangnorgenews.net/]ghd rettetang norge[/url] Hvis du noen gang har hatt en dårlig hårklipp eller stil du vil vite at hele utseende lider, kan det samme sies om det motsatte. Etter noen enkle retningslinjer kan ha håret bidra til å forbedre din generelle utseende og gi mer ungdommelig look.If du handler for rosa ghd, så du må være i stand til å jobbe ut forskjellen mellom en ekte rosa ghd og en falsk rosa ghd. [url=http://ghdrettetangtilbud.qsite.dk/]ghd rettetang[/url] Passer perfekt til de spesielle behovene til farget hår. GHD rettetang for farget hår beskytter ditt ømfintlige fargede hår fra å tørke ut mens den hindrer fargen i å falme med opptil 70 %*. Du kan innstille denne spesielle varmejusteringen etter som håret ditt er tynt, normalt eller tykt, mens den fleksible platen minimerer for mye trykk. Resultatet er vakre, elegante hårfrisyrer med minimalt med falming av fargen.

    Reply
  • clarisonic mia australia can vouchsafe you the first-rate effect

    Posted by iouwanzi on 06/06/2013 06:28am

    [url=http://www.australiaclarisonic.com/]clarisonic australia[/url] Autour du chemin de température Clever spécial à la suite de produits et de solutions Belson, fers de golf ciselés, sèche grève, fers de golf, ainsi que de redressage fers de golf Samsung S8500 avoir un système qui gère le warm-up pour le style de cheveux bouclés. Un inconvénient pour aider à détecter les chiens Rottweiler qui est si normal que ça pourrait faire une sorte d’approche nettement plus lent votre World Wide Web, si un individu peut non seulement trouver le approprié dans votre cas immédiatement [url=http://www.miaclarisonicaustralia.org/]clarisonic mia australia[/url] Ce redressement en termes de fer relèvent de 4 modèles. Pour que vous choisissiez telle qu’énoncée par ceux type de cheveux bouclés, mais aussi les coiffures que vous souhaitez atteindre. Par le biais de processus un peu, c’est très simple aussi obtenir de belles boucles. Et même le type est parfait pour le lissage de la frange ainsi que pour les individus.Espagne, GHD annonce une promotion très utile. Dans les cas où la plupart des gens portent votre propre fer plat âgé dans un point de vente de cette marque, une certainement se verront faible coût à l’achat d’un fer à lisser ghd pas cher. Il est généralement valable jusqu’au 6 mai 2011. En fait, vous ne pouvez généralement décider de votre propre blog officiel de fer plat. Certaines personnes offrent le monde entier !Comme que je quitterai les gens avec la finale de vente spot qui est vraiment très beau. Une Cendrillon moderne important ! [url=http://www.miaclarisonicaustralia.org/]clarisonic mia 2[/url] Mon conjoint et j’ai très certainement besoin personne se produit et en outre choisir de me donner personnellement un Styler F HI-DEF en ce qui concerne la période des fêtes… donc si il l’homme devrions vraiment besoin pour gagner me réjoui, mon conjoint et moi obtenir la connexion pointe GHD Gold Styler et Document a parlé du fait que le Styler juste est au prix de 179 kilos, ainsi que la boîte proverbiale coûte 215 euros nuit gamme. (Enorme wink énorme rustre certainement pas très discret en toute façon.

    Reply
  • ghd Styler caramelo Tutorial: Ondas Glamour Retro-Inspirados

    Posted by hanmeihm on 05/30/2013 03:29pm

    [url=http://www.planchasespanaghdtop.net/ghdtienda/]comprar GHD[/url] ghd haber sido el primero en identificar la aplicacin de la cer¢mica en alisadores! Este simple avance contiene como se esperaba termin consecuencia duplicado simplemente casi cualquier marca de consideracin. Loza de barro es una ventaja sobre todo porque se lleva a cabo a alta temperatura con soltura pero tambin principalmente porque permite que el hierro se deslice del cabello con la ayuda de enganche. [url=http://www.ghd-baratas.webnode.es/]GHD BARATAS[/url] Haga su mejor para el pelo secar al aire. Esta es la mejor manera de conseguir el equilibrio natural de la humedad y secar la parte posterior de. Si usted necesita utilizar un secador de pelo, use una difusin. De salida para romper el flujo de aire para que no se rompa el pelo y darles volando alrededor. [url=http://www.ghd-baratas.webnode.es/]GHD BARATAS[/url] GHD son reconocidos en la peluquera por haber revolucionado el alisamiento de la industria, con la calidad superior y un rendimiento mejor pelo GHD straightnersof hay productos. Cada pocos meses GHD sacar una edicin limitada GHD plancha de pelo o set de regalo. Estos tienden a involucrar ya sea una nueva versin de la GHD IV Styler o aadir algo extra para el paquete, este tipo de producto. Planchas de pelo Ghd vienen con mltiples ajustes de temperatura para que puedan ser utilizados para una amplia variedad de diferentes tipos de cabello. Los hierros consumen muy poca energa, son ecolgicos y seguros de usar. El mecanismo de ajuste autom¢tico se asegura de que el pelo no se dae por el sobrecalentamiento. Con una plancha Ghd, puede estilo de su cabello como en casa sin tener que ir a la peluquera. Estas planchas se pueden utilizar en los tipos de cabellos secos, grasa y ondulaciones. Son muy f¢ciles de usar y cumplir con todos los requisitos para el cabello.

    Reply
  • OnDraw and multiPage

    Posted by leha on 06/13/2004 09:56pm

    May be more reasonable to use OnPrint (?) because it contains CPrintInfo, and doesn't need any additional parameters passing.( Espessially multipage docoments )

    Reply
  • Why I can't use it in Static Library ?

    Posted by Legacy on 11/22/2000 12:00am

    Originally posted by: Jeff

    I can use it in Shared Dll.
    But it doesn't work in Static Libray , I have traced it and
    found that :
    pView->m_pToolBar = new CDialogBar;
    if (!pView->m_pToolBar->Create(pParent, MAKEINTRESOURCE(nIDResource),
    CBRS_TOP, AFX_IDW_PREVIEW_BAR))
    have some problems , Why ?

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: October 29, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you interested in building a cognitive application using the power of IBM Watson? Need a platform that provides speed and ease for rapidly deploying this application? Join Chris Madison, Watson Solution Architect, as he walks through the process of building a Watson powered application on IBM Bluemix. Chris will talk about the new Watson Services just released on IBM bluemix, but more importantly he will do a step by step cognitive …

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds