当前位置:首页>> PowerBuilder>> PB技巧

全文搜索

精华导读

·EasyERP2004 制造行业通用性ERP管理系统
·PB中表的修改对数据窗口和报表的影响的解决办法
·在PB中实现Word内容的替换
·office xp风格菜单基本版
·用PB制作outlook界面源程序(非原来的老外版本)(
·将所见dw内容(包括计算字段)输出到execl中
·ERP在中国应用面临的问题
·PB中使用FORMULA ONE(实例篇
·控制打印机的动态库,兼容win98/98/me/nt2000/xp
·易佳自定义报表系统
·用例驱动的需求过程实践

最新发表

·循序渐进学习Power Builder 6.0(14-3)
·循序渐进学习Power Builder 6.0(15-1)
·循序渐进学习Power Builder 6.0(15-2)
·循序渐进学习Power Builder 6.0(15-3)
·循序渐进学习Power Builder 6.0(15-4)
·循序渐进学习Power Builder 6.0(16-1)
·循序渐进学习Power Builder 6.0(16-2)
·循序渐进学习Power Builder 6.0(16-3)
·循序渐进学习Power Builder 6.0(17-1)
·循序渐进学习Power Builder 6.0(17-2)
·循序渐进学习Power Builder 6.0(17-3)
·循序渐进学习Power Builder 6.0(17-4)
·循序渐进学习Power Builder 6.0(17-5)
·循序渐进学习Power Builder 6.0(17-6)
·用PB编写邮件应用程序(1)
·用PB编写邮件应用程序(2)
·用PB编写邮件应用程序(3)
·用PB编写邮件应用程序(4)
·Facade模式的定义: 为子系统中的一组接口提供一个一致的界面.

控制打印机的动态库,兼容win98/98/me/nt2000/xp

文章来源:www.pdriver.com 文章编辑:admin 添加时间:2004-1-14

作者:李刚 email: zzutligang@hotmail.com

下载2003/12/26月最新版本 www.easybetter.com/soft/printNewCtrl.rar (size :125kb) 已增加功能:
增加了获得打印作业的功能,同时可以对打印作业进行控制,例如:暂停,恢复,取消,重新开始等。
关于无法获得当前打印机是否缺纸的问题,我发现在Windows中也没有直接获得打印机是否缺纸的功能,但如果你将文档送到打印机,在打印机队列管理中的状态中可以看见有缺纸的提示。所以,我建议各位如何想监视是否缺纸,可以通过获得打印机打印作业,然后分析状态中有没有缺纸的状态信息就可以了!

下载:www.easybetter.com/soft
/printctrl.rar (size:78kb) pb7版本 (兼容所有pb版本, rar中已经包括有dll文件)


下载:
www.easybetter.com/soft/printctrl_vc.rar vc写的dll源代码。关于编译的时候出错请见本文最下方的所示:

内有作者李刚 VC 6 写的 dll 源代码,当然还有 pb7 写的调用 dll 的示例。中间有一些很强的功能。

“增加自定义纸张” - 这个功能是对 2000/xp 来使用的,是其它很多 DLL 没有的功能。

点击增加自定义纸张以后,让我们来看看打印机的属性中增加了什么内容:

增加的纸张名称,宽度 / 高,左 / 右,上 / 下等值都是在程序中增加的:如下,是 pb 中调用的代码:
string paperName = " 试验纸张类型 "

string printerName = ""

boolean rt

long w,h,l,r,t,b

w = 2000

h = 1500

l = 10

r = 10

t = 20

b = 20

if lb_1.TotalItems ( )<=0 then

messagebox(""," 没有打印机列表,请执行 < 获得打印机列表 > 功能 ")

return

end if

printerName = lb_1.SelectedItem ()

if printerName="" then

messagebox(""," 请选择一个打印机! ")

return

end if

rt = AddCustomPaper(ref printerName, ref PaperName, w, h, l, r, t, b)

if rt then

messagebox(""," 成功 ")

else

messagebox(""," 失败 ")

end if

在平时的打印中除了可以在程序中选择纸张外,在 windows 系统中也能见到此打印纸张:

关于源代码编译的时候会提示出错,请按作者 所示进行如下修改

看来这个问题不仅仅我碰到了,我不知道vc6的winspool.h中为什么没有定义这个函数,但winspool.lib中确实有这个函数。
打开你的winspool.h,将如下代码添加到文件末尾#ifdef __cplusplus这句话的前面,保存重新编译就可以了。
BOOL
WINAPI
SetDefaultPrinterA(
       LPCTSTR pszPrinter
       );

BOOL
WINAPI
SetDefaultPrinterW(
       LPCTSTR pszPrinter
       );
#ifdef UNICODE
#define SetDefaultPrinter  SetDefaultPrinterW
#else
#define SetDefaultPrinter  SetDefaultPrinterA
#endif // !UNICODE

[ ]

首页 评论 打印 刷新 返回顶部 关闭
【相关文章】  【相关评论】
目前暂时没有相关文章