polecenie wydrukowania obrazu

0

Witam jak w c++ wysłać polecenie do drukarki aby wydrukowała dany obrazek.
(używam Dev-cpp).

0

Hmm, przydały by mi się jakieś najprostsze konkrety czy też kod, znalazłem na MSDN przykładowe kody programów, ale one są zbyt pokomplikowane.

0

StartDoc, StartPage, BitBlt, EndPage, EndDoc
Piszesz kod, jak nie będzie działać to piszesz na forum.
Możesz też zamówić za opłatę działający prosty przykład.

0

Posklejałem coś z tych wszystkich przykładów, pokazuje się tabelka z wyborem drukarki, liczby kopi itp. Ale po potwierdzeniu drukowania nic się nie dzieje, zadanie nie trafia do kolejki. No i jeszcze problem drugi, chodzi mi o to jak można wysłać polecenie wydruku obrazu?

#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
#define IDC_SYSEXIT 2
#define ICON_1	1
#define DIALOG_1	1
#define IDC_PRINT	101
#define IDC_EDIT	102
#define IDC_CANCEL	101
#define IDC_TEXT	103
#define IDI_PRINTER	2

BOOL CALLBACK				DlgProc 			(HWND, UINT, WPARAM, LPARAM) ;
BOOL CALLBACK				PrintDlgProc	(HWND, UINT, WPARAM, LPARAM) ;
BOOL CALLBACK				AbortProc		(HDC, int) ;
BOOL							PrintEditText  (HWND, HWND, char *) ;

HWND					hDlgPrint ;
BOOL					bUserAbort ;
HINSTANCE			hInst ;
BOOL PrintEditText (HWND hwndOwner, HWND hwndEdit,  // all the logic connected
						  char * szCaption)					 // with printing

{
	static 	DOCINFO			di = {sizeof (DOCINFO), szCaption};
	PRINTDLG						pd ;
	BOOL							bSuccess ;
	TEXTMETRIC					tm ;
	int							iTotalLines, iLinesPerPage, iTotalPages, yChar,
									iCharsPerLine, iPage, iLine, iLineNum ;
	WORD							iColCopy, iNoiColCopy ;
	PTSTR							pstrBuffer ;
	char							szDlgText [500] ;

	pd.lStructSize         = sizeof (PRINTDLG) ;
	pd.hwndOwner           = hwndOwner ;
	pd.hDevMode            = NULL ;
	pd.hDevNames           = NULL ;
	pd.hDC                 = NULL ;
	pd.Flags               = PD_ALLPAGES | PD_COLLATE |
									 PD_RETURNDC | PD_NOSELECTION ;
	pd.nFromPage           = 0 ;
	pd.nToPage             = 0 ;
	pd.nMinPage            = 0 ;
	pd.nMaxPage            = 0 ;
	pd.nCopies             = 1 ;
	pd.hInstance           = NULL ;
	pd.lCustData           = 0L ;
	pd.lpfnPrintHook       = NULL ;
	pd.lpfnSetupHook       = NULL ;
	pd.lpPrintTemplateName = NULL ;
	pd.lpSetupTemplateName = NULL ;
	pd.hPrintTemplate      = NULL ;
	pd.hSetupTemplate      = NULL ;

	if (szCaption [0] == '\0')
		strcpy (szCaption, "Untitled") ;

	if (!PrintDlg (&pd))
		return TRUE ;

	if (0 == (iTotalLines = SendMessage (hwndEdit, EM_GETLINECOUNT,
													  0, 0)))
		return TRUE ;

	GetTextMetrics (pd.hDC, &tm) ;
	yChar = tm.tmHeight + tm.tmExternalLeading ;

	iCharsPerLine = GetDeviceCaps (pd.hDC, HORZRES) / tm.tmAveCharWidth ;
	iLinesPerPage = GetDeviceCaps (pd.hDC, VERTRES)/ yChar ;
	iTotalPages	  = (iTotalLines + iLinesPerPage - 1) / iLinesPerPage ;

	pstrBuffer = (PTSTR) malloc (sizeof (char) * (iCharsPerLine + 1)) ;

	EnableWindow (hwndOwner, FALSE) ;

	bSuccess		= TRUE ;
	bUserAbort  = FALSE ;


	di.lpszDocName = szCaption ;

	if (StartDoc (pd.hDC, &di) > 0)
	{
		for (iColCopy = 0 ;
			  iColCopy < ((WORD)pd.Flags & PD_COLLATE ? pd.nCopies : 1) ;
			  iColCopy++)
		{
			for (iPage = 0 ; iPage < iTotalPages ; iPage++)
			{
				for (iNoiColCopy = 0 ;
					  iNoiColCopy < (pd.Flags & PD_COLLATE ? 1 : pd.nCopies) ;
					  iNoiColCopy++)
				{
					if (StartPage (pd.hDC) < 0)
					{
						bSuccess = FALSE ;
						break ;
					}

					for (iLine = 0 ; iLine < iLinesPerPage ; iLine++)
					{
						iLineNum = iLinesPerPage * iPage + iLine ;

						if (iLineNum > iTotalLines)
							break ;

						*(int *)pstrBuffer = iCharsPerLine ;

						TextOut (pd.hDC, 0, yChar * iLine, pstrBuffer,
									(int)SendMessage (hwndEdit, EM_GETLINE,
									(WPARAM)iLineNum, (LPARAM)pstrBuffer)) ;
					}

					if (EndPage (pd.hDC) < 0)
					{
						bSuccess = FALSE ;
						break ;
					}

					if (bUserAbort)
						break ;
				}

				if (!bSuccess || bUserAbort)
					break ;
			}

			if (!bSuccess || bUserAbort)
					break ;
		}
	}

	else
		bSuccess = FALSE ;

	if (bSuccess)
		EndDoc (pd.hDC) ;

	if (!bUserAbort)
	{
		EnableWindow (hwndOwner, TRUE) ;
		DestroyWindow (hDlgPrint) ;
	}
	free (pstrBuffer) ;
	DeleteDC (pd.hDC) ;

	return bSuccess && !bUserAbort ;
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
						  LPSTR lpszCmdLine, int nCmdShow)
{
hInst = hInstance ;
  PrintEditText (0, 0,"Printing demo");
    system("PAUSE");
    return EXIT_SUCCESS;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1