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, "Dream.2017@qq.com MFC实现打印功能");
pDC->SelectObject(oldFont);

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

完整版下载地址连接:https://download.csdn.net/download/qq_37529913/12311312

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双子座断点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值