This function retrieves the names, size numbers, and dimensions of the paper from the printer designated by the printer name.

[C++Builder]     int IKEnumPaperSizes(LPCTSTR PrinterName, LPTSTR PaperNames, LPWORD PaperNumbers, LPPOINT PaperSizes);
[Delphi]         function IKEnumPaperSizes(PrinterName, PaperNames: PChar; var PaperNumbers: Word; var PaperSizes: TPoint): Integer;

Parameters

Name Explanation
PrinterName The printer name
PaperNames The string containing the retrieved paper tray names

By setting this to NULL (in C++Builder) or nil (in Delphi), the number of elements needed for the PaperNumbers and PaperSizes arrays is returned in the Return Value.

PaperNumbers The array containing the retrieved paper tray numbers

   (1)In C++Builder, pass the pointer to the first element of the array

   (2)In Delphi, for example, Pnum: array [0..2] of Word then set Pnum[0]

PaperSizes The array containing the retrieved paper dimensions

   (1)In C++Builder, pass the pointer to the first element of the array

   (2)In Delphi, for example, Ps: array [0..2] of TPoint then set Ps[0]

Return Value

Returns the number of retrieved items. Returns 0 if unsuccessful.

Explanation

The IKEnumPaperSizes function retrieves the names, size numbers, and dimensions of the paper from the printer designated by the printer name. 

To retrieve the number of elements in the PaperNumbers and PaperSizes arrays (in the Return Value), set PaperNames to NULL (in C++Builder) or nil (in Delphi). PaperNames must be allocated with a memory size of the number of elements X (64{1){1. Note that the IKPrintGetArrayNum function can be used to retrieve this.

The PaperNames string will be returned as "xxxxx,xxxxx,xxxxx,¥¥¥¥¥¥¥¥," (delimited by commas and ends with a comma). PaperSizes will retrieve each paper size in 0.1mm units.

Sample code:

In C++Builder

    int Size;
    TCHAR *PaperNames;
    LPWORD PaperNumbers;
    LPPOINT PaperSizes;

    Size = IKEnumPaperSizes("EPSON LP-8200C", NULL, NULL, NULL);
    if (Size < 1) return;
    PaperNames = (TCHAR *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Size * (sizeof(TCHAR) * (64 + 1)) + sizeof(TCHAR));
    PaperNumbers = (LPWORD)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WORD) * Size);
    PaperSizes = (LPPOINT)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(POINT) * Size);
    __try {
        IKEnumPaperSizes("EPSON LP-8200C", PaperNames, PaperNumbers, PaperSizes);
        // various programming code
        ...........
        ...........
    } __finally {
        HeapFree(GetProcessHeap(), 0, PaperNames);
        HeapFree(GetProcessHeap(), 0, PaperNumbers);
        HeapFree(GetProcessHeap(), 0, PaperSizes);
    }

In Delphi

    Size: Integer;
    PaperNames: PChar;
    PaperNumbers: array of Word;
    PaperSizes: array of TPoint;

    Size := IKEnumPaperSizes('EPSON LP-8200C', nil, PWord(nil)^, PPoint(nil)^);
    if Size < 1 then Exit;
    GetMem(PaperNames, Size * (SizeOf(Char) * (64 + 1)) + SizeOf(Char));
    SetLength(PaperNumbers, Size);
    SetLength(PaperSizes, Size);
    try
      IKEnumPaperSizes('EPSON LP-8200C', PaperNames, PaperNumbers[0], PaperSizes[0]);
       // various programming code
       ...........
       ...........
    finally
       FreeMem(PaperNames);
    end;

 

The ImageKit10 VCL is a product created by Newtone Corporation