//bmfHdr.bfSize - bi.biSizelmage + sizeof(bmfHdr)+bi.biSize; //Размер файла

bmfHdr.bfReservedl * bmfHdr.bfReserved2 « 0;

bmfHdr.bfOffBits - sizeof(bmfHdr) + bi.biSize; //Смещение до начала данных //Отправляем заголовок в файл

Wr1teFile(fh. (LPSTR)&bmfHdr. sizeof(bmfHdr). &dwWritten. NULL); //Записываем в файл загружаемый заголовок

WriteFile(fh. (LPSTR)&bi. sizeof(BITMAPINFOHEADER). &dwWritten. NULL); //Выделяем место в памяти для того, чтобы функция GetDIBitsO переслала //туда коды цвета в DIB-формате

char *1р - (char *) Global Alloc(GMEM_FIXED. bi.biSizelmage); int err - GetDIBits(hdc.

BitMap.0.(UINT)r.bottom.//Из карты BitMap строки с 0 no bi.biHeight

lp.(LPBITMAPINF0)&bi. //функция пересылает в массив 1р.

DIB_RGB_C0L0RS): //переводя в беспалитровый формат

WriteFileCfh. lp. bi.biSizelmage. &dwWritten. NULL); //Изображение записывается на диск, после чего освобождается память //и закрывается файл. GlobalFreeCGlobalHandlе(1р)): CloseHandle(fh); return 0; }

Легко заметить, что процедура сохранения битовой карты DIB-формата выглядела значительно компактнее.

Текстовые сообщения и шрифты

Для вывода текста разработчик может использовать функции TextOut (), DrawText (), ExtTextOutO, GrayStringO, TabbedTextOutO.

Функция TextOut (hDC, X, Y, Str. С) выводит одну строку текста, привязанную к позиции (X, Y). Параметры Str и С передают функции указатель на символьную строку и ее длину. Так как длина строки указывается явно, нет необходимости заканчивать строку нулевым байтом.

В качестве альтернативы TextOut () можно использовать функцию TabbedText-Out(hdc. X. Y. Str. С. iNumTabs. piTabStops. xTabOrigin).

Если строка символов содержит символы табуляции, то данная функция будет при выводе заменять их пробелами. Число пробелов определяется дополнительными параметрами. В параметре iNumTabs указывается число позиций табуляции, а в параметре piTabStop - массив позиций табуляции, заданных в пикселах. Например, если средняя ширина символа 8 пикселов и нужно установить позицию табуляции через каждые 5 символов, то этот список будет содержать числа 40, 80, 120 и далее в порядке возрастания. В параметре xTabOrigin передается логическая координата горизонтали точки отсчета позиций табуляции. Точка отсчета может совпадать с начальной позицией строки или отличаться от нее.


⇐ Предыдущая| |Следующая ⇒