我的程序中需要打印条码和铭牌,连接了两台打印机,一台是本地打印机(设置为默认打印机),另一台是网络共享打印机。默认打印都OK,可是共享打印机就不能打印。我的程序如下,请问:在VC中如何调用共享打印机进行打印。以下代码是调用共享打印机的代码。CDC dc;
dc.CreateDC("TEC B-452","TEC B-452","LPT1",NULL);
DOCINFO di;
::ZeroMemory (&di,sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
if (dc.StartDoc(&di) == -1)
{
AfxMessageBox("StartDoc error");
return;
}
程序运行后,就提示StartDoc error,请问打印dc为什么创建不了?是程序上的问题还是系统设置方面的问题?
dc.CreateDC("TEC B-452","TEC B-452","LPT1",NULL);
DOCINFO di;
::ZeroMemory (&di,sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
if (dc.StartDoc(&di) == -1)
{
AfxMessageBox("StartDoc error");
return;
}
程序运行后,就提示StartDoc error,请问打印dc为什么创建不了?是程序上的问题还是系统设置方面的问题?
解决方案 »
- 定时抓屏程序通过服务启动抓屏是黑的.
- [基本问题]如何使用BRUSH和位图刷背景?
- 各位高人,问个光盘触发消的问题
- 怎样作个类似于屏保的程序?
- DDX读数据库,有时候数据会出错?
- 怎么样判断一个字符串是否是合法的路径??急.......
- C/c++疑问,高手请进
- 木马还缺一条腿!!欢迎探讨有关CreateRemoteThread(...)的问题.
- 关于一个线程send(),一个线程recv()问题,基于TCP/IP的,不是UDP。
- 有哪些情况会使CAsyncSocket不能接收数据?
- 如果是用CSocket类的话是不是就不用另外建一个线程来接收数据了?????????
- 如何写一个DHCP服务器
参数对不对呀
EPSON LQ-1600K,EPSON24,LPT1:
HDC hdc;
PRINTER_INFO_1 *pinfo1;
EnumPrinters(PRINTER_ENUM_NETWORK|PRINTER_ENUM_NAME|PRINTER_ENUM_REMOTE,NULL,1,NULL,0,&dwNeeded,&dwReturned);
pinfo1=(PRINTER_INFO_1 *)malloc(dwNeeded);
EnumPrinter(PRINTER_ENUM_NETWORK|PRINTER_ENUM_NAME|PRINTER_ENUM_REMOTE,NULL,1,(PBYTE)pinfo1,dwNeeded,&dwNeeded,&dwReturned);
hdc=CreateDC(NULL,pinfo1->pName,NULL,NULL);
free(pinfo1);
static DOCINFO di={sizeof(DOCINFO),TEXT("print1")};
if(hdcprint!=NULL)
{
if(StartDoc(hdcprint,&di)>0)
if(StartPage(hdcprint)>0&&EndPage(hdcprint)>0)
EndDoc(hdcprint);
DeleteDC(hdcprint);
}
请问Jarrylogin(正经事情我不会,歪门邪道样样行):hdc=CreateDC(("TEC B-452",pinfo1->pName,","LPT1",NULL); 是什么意思??是不是应该写成hdc=CreateDC("TEC B-452","pinfo1->pName,","LPT1",NULL);啊??
首先要枚举网络打印机
EnumPrinters(PRINTER_ENUM_NETWORK|PRINTER_ENUM_NAME|PRINTER_ENUM_REMOTE,NULL,1,NULL,0,&dwNeeded,&dwReturned);
pinfo1=(PRINTER_INFO_1 *)malloc(dwNeeded);
EnumPrinter(PRINTER_ENUM_NETWORK|PRINTER_ENUM_NAME|PRINTER_ENUM_REMOTE,NULL,1,(PBYTE)pinfo1,dwNeeded,&dwNeeded,&dwReturned);
hdc=CreateDC(NULL,pinfo1->pName,NULL,NULL);
hdc=CreateDC("TEC B-452","pinfo1->pName,","LPT1",NULL);
和
hdc=CreateDC(NULL,pinfo1->pName,NULL,NULL);有什么不同啊?麻烦您给解释一下。还有DWORD dwNeeded,dwReturned;
HDC hdc;
PRINTER_INFO_1 *pinfo1;
EnumPrinters(PRINTER_ENUM_NETWORK|PRINTER_ENUM_NAME|PRINTER_ENUM_REMOTE,NULL,1,NULL,0,&dwNeeded,&dwReturned);
pinfo1=(PRINTER_INFO_1 *)malloc(dwNeeded);
EnumPrinter(PRINTER_ENUM_NETWORK|PRINTER_ENUM_NAME|PRINTER_ENUM_REMOTE,NULL,1,(PBYTE)pinfo1,dwNeeded,&dwNeeded,&dwReturned);
hdc=CreateDC(NULL,pinfo1->pName,NULL,NULL);
free(pinfo1);
static DOCINFO di={sizeof(DOCINFO),TEXT("print1")};
if(hdcprint!=NULL)
{
if(StartDoc(hdcprint,&di)>0)
if(StartPage(hdcprint)>0&&EndPage(hdcprint)>0)
EndDoc(hdcprint);
//是否在这里插入打印的内容??
DeleteDC(hdcprint); //??hdcprint是否应该是hac??
}
hdc=CreateDC("TEC B-452","pinfo1->pName,","LPT1",NULL);这段代码应该放在上面代码中的什么位置?
换成
hdc=CreateDC(("TEC B-452",pinfo1->pName,"LPT1",NULL);
枚举网络打印机的信息放pinfo1hdc是hdcprint你调试一下