MFC连接打印机

前言:

转载请附上连接,本帖原创请勿照抄。

以前自己搜索MFC连接打印机程序之后总感觉花里胡哨看不懂,写半天都在出错。今天发布一篇关于MFC连接打印机的文章,希望可以帮助到大家{简化版通俗易懂(就算看不懂复制粘贴都能运行出来)}

环境VS2017,VS低版本可以复制粘贴高版本可以直接导入升级一下项目版本就可以。无需附加别的包。

1.新建BUT按钮实现函数

/**
*按钮函数主要实现初始化打印机
*/
void CprintDlg::OnBnClickedButton1()
{
	CPrintDialog dlg(FALSE);
	if (dlg.DoModal() == IDCANCEL)
		return;

	HDC hPrintDC = dlg.GetPrinterDC();

	DOCINFO P_info;
	::ZeroMemory(&P_info, sizeof(DOCINFO));
	P_info.cbSize = sizeof(DOCINFO);
	P_info.lpszDocName = "Print";
	P_info.lpszOutput = NULL;
	StartDoc(hPrintDC, &P_info);
	LPDEVMODE Mode = dlg.GetDevMode();
	int A4, B5;
	if (Mode->dmPaperSize == DMPAPER_A4)//设置为A4纸
		A4 = 1;
	else
		A4 = 0;
	B5 = 0;//20070115
	if (Mode->dmPaperSize == DMPAPER_B5 || Mode->dmPaperSize == DMPAPER_ENV_B5 || Mode->dmPaperSize == DMPAPER_EXECUTIVE)
	{
		B5 = 1;
	}
	else//20070115
	{
		B5 = 0;
	}
	if (1)
	{
		Mode->dmOrientation = DMORIENT_PORTRAIT;
		ResetDC(hPrintDC, Mode);
	}
	else
	{
		Mode->dmOrientation = DMORIENT_LANDSCAPE;
		ResetDC(hPrintDC, Mode);
	}
	int res = StartPage(hPrintDC);
	SetMapMode(hPrintDC, MM_TWIPS);
	//第一页
	GoPrint(CDC::FromHandle(hPrintDC));
	
	EndPage(hPrintDC);
	EndDoc(hPrintDC);
	DeleteDC(hPrintDC);
}

2.在源文件(.h)和实现文件(.cpp)初始化一个字体 以及初始化字体参数 位置参数

/**
*.h源文件
*/
public:
	afx_msg void OnBnClickedButton1();
	void GoPrint(CDC * pDC);
	CFont* newFontTitle;//标题
	bool IsA4;
	bool IsB5;
	int Top;
	int Left;
};
/**
*.cpp文件
*/
#define UNIT 567
#define BLEN 0.65

void CprintDlg::GoPrint(CDC* pDC)
{
	newFontTitle = new CFont;//标题
	pDC->SetMapMode(MM_TWIPS);
	pDC->SetBkMode(TRANSPARENT);

	IsA4 = 1;
	Top = 0;
	Left = int(3 * UNIT);
	IsB5 = 0;

	if (IsA4 == 1)
	{
		Top = -150;
		Left = 150;

	}
	else if (IsA4 == 0)
	{
		Top = -200;
		Left = 100;

	}
	if (IsB5)
	{
		Top = 0;
		Left = 0;
	}

}

3.调用程序实现打印

/**
*实现打印功能
*/	
newFontTitle->CreatePointFont(1300, "宋体");

CFont* oldFont = (CFont*)pDC->SelectObject(newFontTitle);
pDC->TextOut(4000, -800, "[email protected] MFC实现打印功能");
pDC->SelectObject(oldFont);

发帖不易,希望对你有所帮助。

猜你喜欢

转载自blog.csdn.net/qq_37529913/article/details/105354055