Графический интерфейс GDI в Microsoft Windows


             

Это можно легко сделать при


Это можно легко сделать при помощи функции GetProfileString:

int GetProfileString( LPCSTR lpszSection; // адрес раздела LPCSTR lpszEntry; // адрес элемента раздела LPCSTR lpszDefault; // адрес строки по умолчанию LPSTR lpszReturnBuffer; // адрес буфера для записи int cbReturnBuffer; // размер буфера

Параметр lpszSection должен указывать на имя раздела, в нашем случае на строку "windows". Через параметр lpszEntry передается адрес текстовой строки, содержащий имя элемента раздела, в нашем случае это адрес строки "device".

Если указанного элемента или раздела нет в файле win.ini, используется строка по умолчанию, адрес которой передается через параметр lpszDefault.

Найденная строка (или строка по умолчанию) будет записана в буфер, адрес которого передается через параметр lpszReturnBuffer. Размер буфера должен быть указан в параметре cbReturnBuffer.

Для получения контекста отображения текущего принтера обычно используется такая функция:

HDC PASCAL GetPrinterDC() { char msgbuf[128]; LPSTR pch; LPSTR pchFile; LPSTR pchPort;

// Определяем текущий принтер из файла win.ini if(!GetProfileString("windows", "device", "", msgbuf, sizeof(msgbuf))) return NULL;

// Выполняем разбор строки для выделения имени драйвера, // имени устройства и имени порта ввода/вывода for(pch=msgbuf; *pch && *pch != ','; pch=AnsiNext(pch));

if(*pch) *pch++ = 0;

// Пропускаем управляющие символы и символ табуляции while(*pch && *pch <= ' ') pch=AnsiNext(pch); pchFile = pch;

while(*pch && *pch != ',' && *pch > ' ') pch = AnsiNext(pch);

if(*pch) *pch++ = 0;

while(*pch && (*pch <= ' ' *pch == ',')) pch = AnsiNext(pch);

pchPort = pch;

while(*pch && *pch > ' ') pch = AnsiNext(pch);

*pch = 0;

// Возвращаем контекст отображения для принтера return CreateDC(pchFile, msgbuf, pchPort, NULL); }

Приведенная выше функция способна работать с двухбайтовыми кодами символов, так как для сканирования строки используется функция AnsiNext.


Содержание  Назад  Вперед