急:看看,我这个打印程序哪里不对?

csdndatura 2005-06-14 05:26:42
需要在DLL中调用一个设备的打印功能,在网上找了个例子,改写如下:
int STDMETHODCALLTYPE DC_PrintCard (DC_PrintInfo Data)
/*********************************************************************
说明: 打印卡片信息
参数: PrintCardType,打印机类型:
Data,打印数据
返回: >0,成功返回ATR长度
    <0,错误码
*********************************************************************/
{
int Response;
HDC printDC;
DOCINFO docInfo;
int size=4096;
unsigned long sizeNeeded=0;
unsigned long numPrinters;
int ColHeight = 50;
int StartY = 200;
PPRINTER_INFO_1 pPrinters;
string tt;
pPrinters=(PPRINTER_INFO_1)LocalAlloc((LMEM_FIXED/LMEM_ZEROINIT),size);
int ret=EnumPrinters(PRINTER_ENUM_CONNECTIONS,NULL,1,(LPBYTE)pPrinters,size,&sizeNeeded,&numPrinters);
if(!pPrinters[0].pName)
return -1;
DeviceCapabilities(pPrinters[0].pName,"UG285",DC_ENUMRESOLUTIONS,pps,NULL);
// 第 1步:获得打印机的 DC
printDC = CreateDC(NULL,pPrinters[0].pName, NULL, NULL);
// 第 2步:调用 StartDoc()
docInfo.cbSize = sizeof(docInfo) ;
docInfo.lpszDocName =NULL;
docInfo.lpszOutput = NULL;
docInfo.lpszDatatype = NULL;
docInfo.fwType = 0;
Response = StartDoc(printDC, &docInfo) ;
if (Response <= 0)
return-2;
// 第3步:调用StartPage()
Response = StartPage(printDC);
if (Response <= 0)
return -3;
// 第4步:打印数据
tt = Data.PR_ICCardNo ;//身份证号
TextOut(printDC, 150,StartY+ColHeight,tt, tt.length );
// 第5步:调用EndPage()
Response = EndPage(printDC);
if (Response <= 0)
return -4;
// 第6步:调用EndDOC()
EndDoc(printDC);
return S_OK;
}
但是,编译通不过,错误代码如下:
error C2065: 'PPRINTER_INFO_1' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'pPrinters'
error C2065: 'pPrinters' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'LocalAlloc'
error C2065: 'EnumPrinters' : undeclared identifier
error C2065: 'PRINTER_ENUM_CONNECTIONS' : undeclared identifier
error C2109: subscript requires array or pointer type
error C2228: left of '.pName' must have class/struct/union type
error C2109: subscript requires array or pointer type
error C2228: left of '.pName' must have class/struct/union type
error C2065: 'pps' : undeclared identifier
error C2109: subscript requires array or pointer type
error C2228: left of '.pName' must have class/struct/union type
error C2664: 'TextOutA' : cannot convert parameter 4 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
因为对该方面不是很了解,请高手帮忙了,或者,能提供个可以实现打印票据功能的简单的例子,谢谢先!
...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkstar21cn 2005-06-15
  • 打赏
  • 举报
回复
需要一定的连接库,至于是什么库,我也不知道。
csdndatura 2005-06-15
  • 打赏
  • 举报
回复
有高手没?
csdndatura 2005-06-15
  • 打赏
  • 举报
回复
我找了一下,发现:加#include "winspool.h",大部分错误都去掉了,但是还有最后一个问题:tt 是
string型,编译后的错误为:
error C2664: 'TextOutA' : cannot convert parameter 4 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
如果,我把TextOut(printDC, 150,StartY+ColHeight,tt , tt.length ());改成TextOut(printDC, 150,StartY+ColHeight,(char *)tt.c_str () ,tt.length () );,编译后的错误为:
error LNK2001: unresolved external symbol __imp__EndDoc@4
error LNK2001: unresolved external symbol __imp__EndPage@4
error LNK2001: unresolved external symbol __imp__TextOutA@20
error LNK2001: unresolved external symbol __imp__StartPage@4
error LNK2001: unresolved external symbol __imp__StartDocA@8
error LNK2001: unresolved external symbol __imp__CreateDCA@16
error LNK2001: unresolved external symbol __imp__DeviceCapabilitiesA@20
error LNK2001: unresolved external symbol _EnumPrintersA@28
请教高手了,怎么解决问题!最好不要用CString类,因为我是在别人的代码基础上修改的(没有MFC
先谢谢了~
foochow 2005-06-14
  • 打赏
  • 举报
回复
'PPRINTER_INFO_1' ^_^
jixingzhong 2005-06-14
  • 打赏
  • 举报
回复
missing ';'


你的程序问题还真是不少!!

在查查资料。

应该是要包含文件的!
csdndatura 2005-06-14
  • 打赏
  • 举报
回复
我是看的一篇文章里的,它没说到PPRINTER_INFO_1是在哪个DLL或头文件里的,又查不到该方面的资料,所以很郁闷着呢!
zhousqy 2005-06-14
  • 打赏
  • 举报
回复
哪儿少了分号.
kunp 2005-06-14
  • 打赏
  • 举报
回复
看上去楼主没有包含相应的头文件阿
error C2065: 'PPRINTER_INFO_1' : undeclared identifier

你先看看PPRINTER_INFO_1在哪个头文件里吧,应该是在dll中吧,至少,你把dll的头文件带上试试看,另外,记得把dll加载到你的工程里,否则还有错误等着你。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧