Re[3]: Печать файлов произвольного типа
От: DreadDog Россия  
Дата: 18.12.02 14:57
Оценка:
Здравствуйте, dimok@, Вы писали:

D>А каким образом мы печатаем на нужный принтер? Он должен быть принтером по умолчанию?

Да нам этого хватало, но ты либо предоставляешь пользователю возможность выбрать либо:

bool Open ()
{
  // Get Default Printer Name 
  BOOL founded = FALSE;
  TCHAR  Name[512];

  DWORD cbNeeded = 0, dwReturned = 0;
  EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &cbNeeded, &dwReturned);
  if (cbNeeded)
  {
    PRINTER_INFO_2* pPI2 = (PRINTER_INFO_2*) GlobalAllocPtr(GHND, cbNeeded);
    if (pPI2)
    {
    if (EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, LPBYTE(pPI2), cbNeeded, &cbNeeded, &dwReturned))
    {
        for (DWORD i = 0; i < dwReturned; i++)
        {                            
        if (pPI2[i].Attributes & PRINTER_ATTRIBUTE_DEFAULT == 0)
           continue;
        strcpy(Name, pPI2[i].pPrinterName);
        founded = TRUE;
        break;
        }            
        }
    }
    DWORD error = GetLastError();
    GlobalFreePtr(pPI2);
   }
   if (!founded)
      return false;

   TCHAR  str[512];
   strcpy(str, Name);
   BOOL ret = OpenPrinter(str, (LPHANDLE) &pHandle, &pdef);
   if (!ret)
   {
      DWORD error = GetLastError();
   }
   return true;
}


делаешь как то так но сравниваешь название.

D>И как мы узнаем свое задание? Вдруг кто-то еще печатает?


Не знаю. Начал печатать пиши куда-нибудь а потом сравнивай.
Ты сам начинаешь печатать? Или нет?

Привет, Константин.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.