下面是C++使用打印机的基本代码。这个里面的设备句柄是否和向屏幕输出一样,我们在界面里显示好的,通过截屏DC,然后通过BITBLT传到设备DC打印出来,后面需要试一下。
// printf.cpp : 定义应用程序的入口点。
//
#include "framework.h"
#include "printf.h"
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
char szprinter[80];
char* szDevice, * szDriver, * szOutput;
HDC hdcprint; // 定义唯一设备环境句柄
//OrginPoint point;
//定义唯一打印功课
static DOCINFO di = { sizeof(DOCINFO),"printer",NULL };
// 得到设备字符串存入数组szprinter中
GetProfileString("windows", "device", ",,,", szprinter, 80);
// 将设备字符串分解
if (NULL != (szDevice = strtok(szprinter, ",")) && NULL != (szDriver = strtok(NULL, ",")) && NULL != (szOutput = strtok(NULL, ",")))
// 创建唯一打印机设备句柄
if ((hdcprint = CreateDC(szDriver, szDevice, szOutput, NULL)) != 0)
{
if (StartDoc(hdcprint, &di) > 0) //开端执行唯一打印功课
{
StartPage(hdcprint); //打印机走纸,开端打印
SaveDC(hdcprint); //保存打印机设备句柄
::TextOut(hdcprint, 150, 100, "Hello world!", strlen("Hello world!"));
// 输出一条直线
RestoreDC(hdcprint, -1); //恢复打印机设备句柄
EndPage(hdcprint); //打印机停纸,停止打印
EndDoc(hdcprint); //结束唯一打印功课
MessageBox(NULL, "打印完毕!", "提示", MB_ICONINFORMATION);
}
// 用API参数DeleteDC销毁唯一打印机设备句柄
DeleteDC(hdcprint);
}
else
{
MessageBox(NULL, "没有默认打印机,或者没有安装打印机!", "", 0);
return 0;
}
return 0;
}