打印机编程 - 初级入门篇


具体步骤:

  1. 获得打印机DC(设备环境句柄).
  2. 开始打印(StartDoc).
  3. 开始一页(StartPage).
  4. 对DC进行绘图操作,就像往窗口上画图一样。
  5. 结束一页(EndPage).
  6. 结束打印(EndDoc)或转到第3步再开始新的一页.
  7. 删除打印创建的资源,如:释放DC(ReleaseDC)、删除字体、画笔、画刷之类的对象(DeleteObject)


第一步:

获得打印机DC(设备环境句柄)

可以用PrintDlg函数来获取DC。具体代码如下:

HDC hdc;
PRINTDLG printInfo; 
ZeroMemory(&printInfo,sizeof(printInfo)); //清空该结构 
printInfo.lStructSize = sizeof(printInfo); 
printInfo.hwndOwner = 0; 
printInfo.hDevMode = 0; 
printInfo.hDevNames = 0; 
printInfo.Flags = PD_RETURNDC | PD_RETURNDEFAULT | PD_ALLPAGES; 
//PD_RETURNDC指定返回DC,PD_RETURNDEFAULT 指定不显示打印设置对话框直接返回默认设置
PrintDlg(&printInfo);//调用API拿出默认打印机 
DWORD rst = CommDlgExtendedError();//看看出错没有 
if(rst != 0) 
{//出错了,清空标志再次调用API,此时就会弹出打印设置对话框供用户选择了 
printInfo.Flags = 0; 
PrintDlg(&printInfo); 
}
hdc = printInfo.hDC; //得到打印DC
第二步:

开始打印(StartDoc)

if(hdc)
{
DOCINFOA dia = {0};
dia.cbSize = sizeof(DOCINFOA);
dia.lpszDocName = "打印文档的名字";
StartDoc(hdc,&dia)//开始打印
}else
{
return false;
}

第三步:

开始一页(StartPage)

StartPage(hdc);//开始一页新的打印

第四步:

对DC进行绘图操作

HPEN pen = CreatePen(PS_SOLID,5,0);
SelectObject(hdc,pen);
Rectangle(hdc,100,100,200,200);//在(100,100)绘制一个线条粗细为5的、宽高为100的矩形

第五步:

结束一页(EndPage)

EndPage(hdc);//结束这一页打印
第六步:

结束打印(EndDoc)或转到第3步再开始新的一页.

EndDoc(hdc);//结束打印

第七步:

删除打印创建的资源:

DeleteObject(pen);//删除画笔
ReleaseDC(hWnd,hdc2);//释放DC


本文作者非专业人士,难免会有纰漏和错误,欢迎大家指正。
如果您还想了解更多打印方面的知识,请阅读 《打印机编程 - 中级篇》

转载请注明出处:http://blog.csdn.net/itdeng/article/details/7362852

你可能感兴趣的:(Windows编程)