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


           

В качестве параметров этой функции


В качестве параметров этой функции передаются идентификатор окна приложения, адрес буфера, содержащего печатаемый текст, и размер этого буфера в байтах.

После выполнения печати буфер расфиксируется, после чего редактор текста получает фокус ввода:

LocalUnlock(hTxtBuf); SetFocus(hEdit); return 0;

Все функции, предназначенные для работы с принтером, мы вынесли в отдельный файл (листинг 6.2).

Листинг 6.2. Файл prnfile/print.cpp

// ---------------------------------------------------- // Функции для работы с принтером // ---------------------------------------------------- #define STRICT #include <windows.h> #include <windowsx.h> #include <commdlg.h> #include <string.h> #include "prnfile.hpp"

// Прототипы функций BOOL CALLBACK _export AbortDlgFunc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);

BOOL CALLBACK _export AbortFunc(HDC hdc, int nCode); HDC GetPrinterDC(HWND);

// Внешние глобальные переменные extern HWND hdlgAbort; extern BOOL fAbort;

BOOL fAbort = FALSE; HWND hdlgAbort = 0; static PRINTDLG pd;

// ---------------------------------------------------- // Функция PrintFile // Печать файла // ----------------------------------------------------

BOOL PrintFile(HWND hwnd, NPSTR npBuff, WORD wSize) { HDC hdc; int cyPage; int cyChar, yPos, nLength; int i; WORD wCurPos = 0; TEXTMETRIC tm;

ABORTPROC lpAbortFunc; BOOL fDone; char abBuffer[256]; DOCINFO docinfo; DLGPROC lpAbortDlgFunc; HINSTANCE hInst; int rc;

// Получаем контекст устройства для принтера hdc = GetPrinterDC(hwnd);

// Определяем разрешение принтера по вертикали cyPage = GetDeviceCaps(hdc, VERTRES);

// Определяем метрики текста GetTextMetrics(hdc, &tm);

// Вычисляем высоту шрифта cyChar = tm.tmHeight + tm.tmExternalLeading;

// Создаем переходник для функции AbortFunc hInst = GetWindowInstance(hwnd); lpAbortFunc = (ABORTPROC)MakeProcInstance((FARPROC)AbortFunc, hInst);

// Устанавливаем функцию AbortProc rc = SetAbortProc(hdc, lpAbortFunc); if(rc <= 0) { DeleteDC(hdc); return FALSE; }


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





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