TPrinter *p = Printer();
wchar_t* prtName = p->Printers->Strings[p->PrinterIndex].w_str();
int nNumPapers = DeviceCapabilities(prtName, NULL, DC_PAPERNAMES, NULL, NULL);
wchar_t* paperNames = new wchar_t[nNumPapers * 64];
ZeroMemory(paperNames, sizeof(wchar_t) * 64 * nNumPapers);
POINT* paperSize = new POINT[nNumPapers];
ZeroMemory(paperSize, sizeof(POINT) * nNumPapers);
DeviceCapabilities(prtName, NULL, DC_PAPERNAMES, paperNames, NULL);
DeviceCapabilities(prtName, NULL, DC_PAPERSIZE, (LPWSTR)paperSize, NULL);
for( int i = 0; i < nNumPapers; i++ )
{
ListBox2->Items->Add(String().sprintf(L"%s :: %.1fmm X %.1fmm",
paperNames, paperSize[i].x / 10., paperSize[i].y / 10.));
paperNames += 64;
}
뽀뽀중 님이 쓰신 글 :
: 프린터의 종이 크기 및 이름을 잘 가져 오는데...
:
: 프린터가 출력 가능한 용지크기만 아니라 다른 크기의 용지크기도 가져 옵니다.
:
:
: 그래서 선택된 프린터의 종이크기만 가져 오려면 어떻게 해야 하나요?
:
: 예를 들어, A4 까지 출력 가능한 프린터가 있고,
: A3까지 출력이 가능한 프린터가 있고
: A1까지 출력이 가능한 프린터가 있는데,
:
: 각 프린터에서 출력 가능한 용지크기의 리스트만 가져오는 방법은 없나요?
:
:
:
: Julien 님이 쓰신 글 :
: :
: : HANDLE hPrinter = NULL;
: : DWORD dwNeeded = 0, dwReturned = 0;
: : FORM_INFO_1 *forminfo = NULL;
: : bool bFlag;
: :
: : bFlag = OpenPrinter(NULL, &hPrinter, NULL);
: : if(bFlag == false || hPrinter == NULL)
: : return;
: :
: : try
: : {
: : bFlag = EnumForms(hPrinter, 1, 0, 0, &dwNeeded, &dwReturned);
: : if((!bFlag) && (GetLastError() != ERROR_INSUFFICIENT_BUFFER) || (dwNeeded == 0))
: : return;
: :
: : forminfo = (FORM_INFO_1 *)GlobalAlloc(GPTR, dwNeeded);
: : if(forminfo == NULL)
: : return;
: :
: : bFlag = EnumForms(hPrinter, 1, (LPBYTE)forminfo, dwNeeded, &dwNeeded, &dwReturned);
: : if(!bFlag)
: : {
: : GlobalFree(forminfo);
: : return;
: : }
: :
: : FORM_INFO_1 t;
: : for(unsigned int i = 0 ; i < dwReturned ; i++)
: : {
: : t = forminfo[i];
: : ListBox2->Items->Add(String().sprintf(L"Paper : %s, Size: %dmm x %dmm",
: : t.pName, t.Size.cx / 1000, t.Size.cy / 1000));
: : }
: : }
: : __finally
: : {
: : ClosePrinter(hPrinter);
: : }
: :
: : 뽀뽀중 님이 쓰신 글 :
: : : PrinterSetupDialog1 로 프린터 및 용지크기를 설정 하였습니다
: : :
: : : 그리고 설정된 프린터 이름은
: : :
: : : Label3->Caption = Printer()->Printers->Strings[Printer()->PrinterIndex];
: : :
: : : 위와 같이 하여 가져 왔는데,
: : :
: : : 용지사이즈는 어떻게 해야 알수 있나요??
: : :
: : : 미리 감사 드립니다.