你为什么要用SDK?我前些日子写存折打印是苦恼透了,到处求代码,没有人理我,只好到网上去求了,如果你用VC+MFC,我可以推荐给你一套打印类库,太方便了,平推的打折子的工作我只用了半天就完成了。爽!爽!爽!拿来和兄弟分享。 在www.codetools.com中找print,有一套Print Lib,好用。有例子程序,我把要打印的内容通过一个结构传给CPage对象,检测是否有在线的打印机,格式输出,打印预览等简直是小菜一碟。
解决方案 »
- 基于udp的丢包率统计
- 用ADO方式删除记录集,除了一个一个删,有没有一次性全部删除的方法?
- 在单文档中,如何在mainfram关闭另外一个类生成的非模态对话框!
- 如何设置静态控件背景未透明...
- 有人用过ActiveX Control控件的Microsoft Web 浏览器控件么?有个简单问题请教,解决问题给100分.此贴50分顶者有分.
- 【公告】OpenGL中什么时候用glLoadIdentity()??和用glPushMatrix(),flPopMatrix()有什么区别呀???
- 怎样在程序中使用Windows的输入法?
- 对话框类怎样和视图类交换数据,请各位大侠指点一二!
- 菜鸟的问题,请赐教
- 关于用ANSI C++在Window下写控制台程序的小问题
- 怎样做一个能生成二进制文件软件?(用VC)
- 非常奇怪的DEBUG信息
void PrintF2(HWND hwnd,char cLeoOrKev)
{
PRINTDLG pd = {0};
pd.lStructSize = sizeof(pd);
pd.hwndOwner = hwnd;
pd.hDevMode = hDevMode;
pd.hDevNames = hDevNames;
pd.Flags = PD_DISABLEPRINTTOFILE|PD_NOPAGENUMS|PD_SHOWHELP
|PD_RETURNDC|PD_NOSELECTION;
pd.nFromPage = 0xFFFF;
pd.nToPage = 0xFFFF;
pd.nMinPage = 0;
pd.nMaxPage = 0xFFFF;
pd.nCopies = 1; if (PrintDlg(&pd))
{
hDevMode=pd.hDevMode;
hDevNames=pd.hDevNames;
GoPrintF2(hwnd,
pd.hDC,
pd.nCopies,cLeoOrKev);
}
}
void GoPrintF2(HWND hwnd, // 所属窗口的句柄
HDC hdc, // 打印机设备描述表
UINT nCopies, // 复制份数
char cLeoOrKev //xxxxxxxxxx
)
{
HFONT hFont,hOldFont;
LOGFONT LogFont = {-12, 0, 0, 0, FW_NORMAL,
FALSE, FALSE, FALSE,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE,
"宋体"
};
DOCINFO di;
unsigned int i;
int LogPixelSy;
unsigned short int ibas;
// 填写DOCINFO结构。
ZeroMemory(&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = "xxxxx副页打印";// 文档名称
di.lpszOutput = NULL; // 输出文件的名称
LogPixelSy = GetDeviceCaps(hdc, LOGPIXELSY);
ibas=LogPixelSy/100;
LogFont.lfHeight = -MulDiv(14, LogPixelSy, 72);
hFont=CreateFontIndirect(&LogFont);
if(hFont==NULL)return;
if (StartDoc(hdc, &di) < 0)
{ DWORD dwErr = GetLastError();
char szErr[128];
wsprintf(szErr, "%ld打印机作业错误%ld", (DWORD)hdc, dwErr);
MessageBox(hwnd, szErr, "错误", MB_OK | MB_ICONHAND);
DeleteDC(hdc);
return;
} // 废止主窗口,以避免产生重入问题。
EnableWindow(hwnd, FALSE); for(i=0;i<nCopies;i++)
{
StartPage(hdc);
hOldFont=SelectObject(hdc,hFont);
SetTextCharacterExtra(hdc, 1);
TextOut(hdc,240*ibas,267*ibas,"分 析 依 据:",16);
if(cLeoOrKev==1)
{
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight,"SY/ T xxxx-1997",15);
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight*3,"《xxxxxxxxxxxx分析方法》",34);
TextOut(hdc,240*ibas,270*ibas-LogFont.lfHeight*5,"主要分析设备:",14);
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight*7,"xxxxxxxxxxxx440",18);
}
if(cLeoOrKev==2)
{
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight,"SY/ T 6189-1996",15);
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight*3,"《xxxxxxxxxxxxxx方法》",28);
TextOut(hdc,240*ibas,270*ibas-LogFont.lfHeight*5,"主要分析设备:",14);
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight*7,"xxxxxxxxx仪",11);
}
TextOut(hdc,240*ibas,270*ibas-LogFont.lfHeight*10,"分析环境:",10);
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight*12,"室温: ℃",18);
TextOut(hdc,273*ibas,270*ibas-LogFont.lfHeight*14,"湿度: %",18);
TextOut(hdc,240*ibas,270*ibas-LogFont.lfHeight*17,"分 析 人:",12);
TextOut(hdc,240*ibas,270*ibas-LogFont.lfHeight*19,"校 核 人:",12);
TextOut(hdc,240*ibas,270*ibas-LogFont.lfHeight*21,"技术负责人:",12);
SelectObject(hdc,hOldFont);
EndPage(hdc);
}
EndDoc(hdc); // 启用主窗口
EnableWindow(hwnd, TRUE);
DeleteObject(hFont);
DeleteDC(hdc);
MessageBeep( 0) ;}