Click here to Skip to main content
15,884,298 members
Articles / Desktop Programming / MFC

Easy to Use Class for ScreenCapture to Printer

Rate me:
Please Sign up or sign in to vote.
4.14/5 (29 votes)
9 May 2004CPOL3 min read 168.9K   3.9K   38  
A class for easily capturing screen and printing to default printer
// PrintDlg.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "PrintDlg.h"
#include "MainFrm.h"
#include "afxwin.h"

//-----------------------------------
// Add this to the class, where you 
// would like to add the PrntScreen 
// function
#include "PrntScreen.h"
//-----------------------------------


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CPrintDlgApp

BEGIN_MESSAGE_MAP(CPrintDlgApp, CWinApp)
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
END_MESSAGE_MAP()


// CPrintDlgApp construction

CPrintDlgApp::CPrintDlgApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}


// The one and only CPrintDlgApp object

CPrintDlgApp theApp;

// CPrintDlgApp initialization

BOOL CPrintDlgApp::InitInstance()
{
	CWinApp::InitInstance();

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	// of your final executable, you should remove from the following
	// the specific initialization routines you do not need
	// Change the registry key under which our settings are stored
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization
	SetRegistryKey(_T("Local AppWizard-Generated Applications"));
	// To create the main window, this code creates a new frame window
	// object and then sets it as the application's main window object
	CMainFrame* pFrame = new CMainFrame;
	m_pMainWnd = pFrame;
	// create and load the frame with its resources
	pFrame->LoadFrame(IDR_MAINFRAME,
		WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
		NULL);
	// The one and only window has been initialized, so show and update it
	pFrame->ShowWindow(SW_SHOW);
	pFrame->UpdateWindow();
	// call DragAcceptFiles only if there's a suffix
	//  In an SDI app, this should occur after ProcessShellCommand
	return TRUE;
}


// CPrintDlgApp message handlers



// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	enum { IDD = IDD_ABOUTBOX };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
	DECLARE_MESSAGE_MAP()
public:
  afx_msg void OnBnClickedButton3();
  afx_msg void OnBnClickedButton1();
  afx_msg void OnBnClickedButton2();
  CButton m_BT_Check;
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
  CDialog::DoDataExchange(pDX);
  DDX_Control(pDX, IDC_CHECK1, m_BT_Check);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
  ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
  ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
END_MESSAGE_MAP()

// App command to run the dialog
void CPrintDlgApp::OnAppAbout()
{
	CAboutDlg aboutDlg;
	aboutDlg.DoModal();
}


// CPrintDlgApp message handlers

void CAboutDlg::OnBnClickedButton1()
{
  //-----------------------------
  //Fullscreen Capture 
  //-----------------------------
  CPrntScreen * ScrCap;
  ScrCap = new CPrntScreen();

  //Test, if default printer
  if (m_BT_Check.GetCheck()==BST_CHECKED)
    ScrCap->DoPrntScreen(0,2,false);  //Fullcreen, Landscape, Default printer
  else 
    ScrCap->DoPrntScreen(0,0,true);   //Fullcreen, Printer menu

  delete ScrCap;
  ScrCap = NULL;
}


void CAboutDlg::OnBnClickedButton2()
{
  //-----------------------------
  //Active Window Capture
  //-----------------------------
  CPrntScreen * ScrCap;
  ScrCap = new CPrntScreen();

  //Test, if default printer
  if (m_BT_Check.GetCheck()==BST_CHECKED) 
    ScrCap->DoPrntScreen(1,2,false);  //Active Window, Landscape, Default printer
  else 
    ScrCap->DoPrntScreen(1,0,true);   //Active Window, Printer menu

  delete ScrCap;
  ScrCap = NULL;
}


void CAboutDlg::OnBnClickedButton3()
{
  //-------------------------------------------
  //Client Area of Active Window Capture 
  //-------------------------------------------
  CPrntScreen * ScrCap;
  ScrCap = new CPrntScreen();

  //Test, if default printer
  if (m_BT_Check.GetCheck()==BST_CHECKED) 
    ScrCap->DoPrntScreen(2,2,false);  //Client area, Landscape, Default printer
  else 
    ScrCap->DoPrntScreen(2,0,true);   //Client area, Printer menu

  delete ScrCap;
  ScrCap = NULL;
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
Brazil Brazil
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions