Witam jak w c++ wysłać polecenie do drukarki aby wydrukowała dany obrazek.
(używam Dev-cpp).
0
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;
}