关于DeviceCapabilitiesA函数的使用,请高手指点,谢谢!!!(100分)

  • 主题发起人 主题发起人 fjw
  • 开始时间 开始时间
F

fjw

Unregistered / Unconfirmed
GUEST, unregistred user!
我想获取当前打印机支持的最大纸张长度与宽度,看了DeviceCapabilitiesA函数的帮助,得知可以取得,但却不会用,如有熟悉的大侠,请指教,谢谢!
先说说我的用法:
var
Device, Driver, Port: array [0..255] of char;
ADevMode: THandle;
Rslt: integer;
pxy : TPoint;
begin
Printer.GetPrinter(Device, Driver, Port, ADevMode);
Rslt:=DeviceCapabilitiesA(Device, Port, DC_MAXEXTENT, nil, nil);
if Rslt>0 then
begin
if DeviceCapabilitiesA(Device, Port, DC_MAXEXTENT, @pxy, nil)=-1 then
raise Exception.Create('Devcap Error!');
end;
得到最大纸宽: pxy.X
最大纸长: pxy.Y
不知以上运用是否正确,可我每次取得的数X和Y都是1,不知错在哪里,请高手指教!
 
这样看看
var
Device, Driver, Port: array [0..255] of char;
ADevMode: THandle;
DevMode : TDevMode;
pxy : TPoint;
begin
Printer.GetPrinter(Device, Driver, Port, ADevMode);
if DeviceCapabilitiesA(Driver, Device, Port, DC_MAXEXTENT, @pxy, @DevMode)=-1 then
raise Exception.Create('Devcap Error!');
end;
 
还是不对啊,兄弟,这回返回的都是x=17, y=4208323,我的两种打印机所支持的纸张明显是不一样的,但返回的值却一样,肯定有问题了,还有就是,当我把打印机选为W2K的传真时,得到的值却是x=2160, y=3056,好像有点正确了。不知为什么,还请大侠们帮我指点一二啊?
 
我的更糟, 连DeviceCapabilitiesA都调用不了.
 
不会吧,你有没有引用单元WinSpool啊?
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
I
回复
0
查看
2K
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部