Форум » FiveWin » A3 » Ответить

A3

Pasha: Вопрос по TPrinter Как определить, поддерживает девайс формат A3 ? Устанавливается формат методом SetPage, а как определить, поддерживается ли этот метод ? Если FW это не умеет, как сделать через WinAPI ? Или любой харборовской gui-библиотекой ?

Ответов - 3

_сергей: winapi: используй(те?) функцию DeviceCapabilities: void readPrinterParameters(){ int i, j; char mess[512], sTmp[512]; WORD aWord[200]; LPVOID lpMsgBuf; ‹...› i=DeviceCapabilities(/*«hp LaserJet 1300 PCL6»*/«FinePrint 2000», NULL, DC_PAPERS, (LPSTR)aWord, NULL); if (i!=-1){ sprintf(mess, »%d», i); strcpy(mess, »»); for (j=0; j‹i; j++){ sprintf(sTmp, », %d», aWord[j]); strcat(mess, sTmp); } MessageBox(hWnd, mess, «device capabilities», MB_OK); } else{ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER¦FORMA T_MESSAGE_FROM_SYSTEM¦FORMAT_MESSAGE_IGNORE_INSERT S,\ NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); MessageBox( NULL, (LPCTSTR)lpMsgBuf, »- ошибка считывания параметров принтера - », MB_OK ¦ MB_ICONSTOP ); LocalFree( lpMsgBuf ); } }

_сергей: void readPrinterParameters(){  int i, j;  char mess[512], sTmp[512];  WORD aWord[200];  LPVOID lpMsgBuf;  i=DeviceCapabilities(/*«hp LaserJet 1300 PCL6»*/"FinePrint 2000", NULL, DC_PAPERS, (LPSTR)aWord, NULL);  if (i!=-1){   sprintf(mess, "%d", i);   strcpy(mess, "");   for (j=0; j<i; j++){    sprintf(sTmp, ", %d", aWord[j]);    strcat(mess, sTmp);   }   MessageBox(hWnd, mess, "device capabilities", MB_OK);  }  else{  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER ¦FORMA T_MESSAGE_FROM_SYSTEM¦\   FORMAT_MESSAGE_IGNORE_INSERTS,\   NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),\    (LPTSTR) &lpMsgBuf, 0, NULL);  MessageBox( NULL, (LPCTSTR)lpMsgBuf, "- ошибка считывания параметров принтера - ",   MB_OK ¦ MB_ICONSTOP );  LocalFree( lpMsgBuf );  } }

Pasha: Спасибо ! Этой функцией (DeviceCapabilities) и буду вытаскивать все что надо В MiniGUI тоже есть примерчик: HB_FUNC (RR_DEVICECAPABILITIES) { LPBYTE cBuffer,pBuffer,nBuffer,sBuffer,bnBuffer,bwBuffer, bcBuffer; DWORD numpapers,numbins,i; LPPOINT lp; numbins=DeviceCapabilities(pi2-›pPrinterName,pi2-› pPortName,DC_BINNAMES,NULL,NULL); numpapers=DeviceCapabilities(pi2-›pPrinterName,pi2 -›pPortName,DC_PAPERNAMES,NULL,NULL); if (numpapers›0) { pBuffer = GlobalAlloc(GPTR,numpapers*64); nBuffer = GlobalAlloc(GPTR,numpapers*sizeof(WORD)); sBuffer = GlobalAlloc(GPTR,numpapers*sizeof(POINT)); cBuffer = GlobalAlloc(GPTR,numpapers*128); DeviceCapabilities(pi2-›pPrinterName,pi2-›pPortNam e,DC_PAPERNAMES,pBuffer,pi2-›pDevMode); DeviceCapabilities(pi2-›pPrinterName,pi2-›pPortNam e,DC_PAPERS,nBuffer,pi2-›pDevMode); DeviceCapabilities(pi2-›pPrinterName,pi2-›pPortNam e,DC_PAPERSIZE,sBuffer,pi2-›pDevMode); for ( i = 0; i ‹ numpapers; i++) { и так далее




полная версия страницы