documentproperties 怎么没有生效?
我调用documentproperties函数显示打印首选项让用户设置
但改了以后没有生效,比如将纸张从A4改为16k,重新调用的时候显示的还是A4
代码如下,帮忙给看一下
procedure SetupPrinter(hWnd: HWND);
var
strPrinterName : String;
PrinterName, Driver, Port : array[0..MAX_PATH] of Char;
DevModeHandle : THandle;
phPrinter: Cardinal;
pCmd: PChar;
DevMode: PDeviceMode;
iRet: Integer;
PrinterDefaults: TPrinterDefaults;
pDMode : PDevMode;
hd: HDC;
begin
if Printer.Printers.Count < 1 then
begin
MessageBox(hWnd, PChar('请首先安装打印机!'), PChar('打印机设置'),
MB_OK or MB_ICONSTOP);
Exit;
end;
SetLength(strPrinterName,MAX_PATH);
Printer.GetPrinter(PrinterName, Driver, Port, DevModeHandle);
strPrinterName := PrinterName;
PrinterDefaults.pDatatype := 0;
PrinterDefaults.pDevMode := 0;
PrinterDefaults.DesiredAccess := PRINTER_ACCESS_USE;
if not OpenPrinter(PChar(strPrinterName), phPrinter, @PrinterDefaults) then
begin
MessageBox(hWnd, '获取打印机信息出错', '错误', MB_ICONWARNING);
Exit;
end;
try
//PrinterProperties(0, phPrinter);
iRet := DocumentProperties(hWnd, phPrinter, PChar(strPrinterName),
DevMode^, DevMode^, 0);
if iRet < 0 then
begin
MessageBox(hWnd, '获取打印机信息出错', '错误', MB_ICONWARNING);
Exit;
end;
GetMem(DevMode, iRet);
try
iRet := DocumentProperties(hWnd, phPrinter, PChar(strPrinterName),
DevMode^, DevMode^, DM_OUT_BUFFER);
if iRet < 0 then
begin
MessageBox(hWnd, '获取打印机信息出错', '错误', MB_ICONWARNING);
Exit;
end;
iRet := DocumentProperties(hWnd, phPrinter, PChar(strPrinterName),
DevMode^, DevMode^, DM_OUT_BUFFER or DM_IN_BUFFER or DM_IN_PROMPT);
if iRet < 0 then
begin
MessageBox(hWnd, '设置打印机信息出错', '错误', MB_ICONWARNING);
Exit;
end;
if iRet = IDCANCEL then
Exit;
iRet := DocumentProperties(hWnd, phPrinter, PChar(strPrinterName),
DevMode^, DevMode^, DM_OUT_BUFFER or DM_IN_BUFFER);
if iRet < 0 then
begin
MessageBox(hWnd, '设置打印机信息出错', '错误', MB_ICONWARNING);
Exit;
end;
Printer.Refresh;
finally
FreeMem(DevMode);
end;
finally
ClosePrinter(phPrinter);
end;
end;