Замумукался я с этими принтерами (помогите!)
От: Antic  
Дата: 22.10.01 18:26
Оценка:
Как сказано в клевом MSDN
Чтобы получить дефолтовый принетр под 95-98 надо:

BOOL bFlag;
PRINTER_INFO_2 *ppi2 = NULL;
DWORD dwNeeded = 0;
DWORD dwReturned = 0;
HDC PrinterDC;


char pPrinterName [50];
char pDriverName[50];
char temp[50];

EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 2, 0, NULL, &dwNeeded, &dwReturned);
if (dwNeeded == 0)

// типа нэту принтеров
//return FALSE;


ppi2 = (LPPRINTER_INFO_2) LocalAlloc (LPTR, dwNeeded);

bFlag = EnumPrinters(PRINTER_ENUM_DEFAULT, NULL, 2, NULL, dwNeeded, &dwNeeded, &dwReturned);

if (!bFlag)
{
LocalFree (LocalHandle (ppi2));
return FALSE;
}



// создаем контектс устройства принтера
PrinterDC = CreateDC ((LPCTSTR)ppi2->pDriverName, (LPCTSTR)ppi2->pPrinterName , NULL, NULL);
У меня этот кусок не работает нифига, при вызове второго EnumPrinters ошибка в winspool.drv

Чтобы получить дефолотовый принтер под NT:


if (GetProfileString("windows", "device", ",,,", cBuffer, MAXBUFFERSIZE) <= 0)
return FALSE;

// Printer name precedes first "," character...
char *token;
ZeroMemory(pPrinterName, sizeof(char)*50);
ZeroMemory(pDriverName, sizeof(char)*50);

token = strstr(cBuffer, ",");

strncpy(pPrinterName, cBuffer, strlen(cBuffer) — strlen(token));

token++;
strcpy(temp, token);
token = strstr(temp, ",");
strncpy(pDriverName, temp, strlen(temp) — strlen (token));



PrinterDC = CreateDC ( (LPCTSTR) pDriverName, (LPCTSTR) pPrinterName , NULL, NULL);

Все ништяк работает и под 98 и под NT

так вот собтвенно вопрос люди добрые, мне надо сделать универсальную программу 95-98-NT, есть ли особая разница при использовании
GetProfileString под NT и под 95-98 -й?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.