我调用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;