Операционная система Windows 95 для программиста



         

Исходные тексты приложения RtfPad - часть 9


// Заполняем поля структуры DOCINFO memset(&docInfo, 0, sizeof(DOCINFO)); docInfo.cbSize = sizeof(DOCINFO); docInfo.lpszOutput = NULL; docInfo.lpszDocName = "RtfPad document";

// Начинаем печать документа nRc = StartDoc(hPrintDC, &docInfo);

// Если произошла ошибка, получаем и выводим на экран // код ошибки if(nRc < 0) { char szErr[128]; DWORD dwErr = GetLastError(); wsprintf(szErr, "Print Error %ld", dwErr);

MessageBox(NULL, szErr, szAppTitle, MB_OK | MB_ICONEXCLAMATION);

DeleteDC(hPrintDC); return; }

// Начинаем печать страницы StartPage(hPrintDC);

lLastChar = 0;

// Определяем длину текста в байтах lTextSize = SendMessage(hwndEdit, WM_GETTEXTLENGTH, 0, 0);

// Цикл по всем страницам документа while (lLastChar < lTextSize) { // Форматируем данные для принтера и печатаем их lLastChar = SendMessage(hwndEdit, EM_FORMATRANGE, TRUE, (LPARAM) &fr);

if(lLastChar < lTextSize) { // Завершаем печать очередной страницы EndPage(hPrintDC);

// Начинаем новую страницу StartPage(hPrintDC); fr.chrg.cpMin = lLastChar; fr.chrg.cpMax = -1; } }

// Удаляем информацию, которая хранится в // органе управления Rich Edit SendMessage(hwndEdit, EM_FORMATRANGE, TRUE, (LPARAM)NULL);

// Завершаем печать страницы EndPage(hPrintDC);

// Завершаем печать документа EndDoc(hPrintDC);

// Удаляем контекст принтера DeleteDC(hPrintDC); } }

Файл rtfpad.h (листинг 5.2) содержит описание функций и определение константы IDC_RTFEDIT (идентификатор органа управленияRich Edit).

Листинг 5.2. Файл rtfpad\rtfpad.h

// ----------------------------------------------------- // Описание функций // ----------------------------------------------------- LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); BOOL WndProc_OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct); void WndProc_OnDestroy(HWND hWnd); void WndProc_OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify); LRESULT WndProc_OnNotify(HWND hWnd, int idFrom, NMHDR FAR * pnmhdr); void WndProc_OnSize(HWND hwnd, UINT state, int cx, int cy); void WndProc_OnSetFocus(HWND hwnd, HWND hwndOldFocus); void FileSaveAs(HWND hwnd); DWORD CALLBACK SaveCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb); void FileOpen(HWND hwnd); DWORD CALLBACK OpenCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb); void FilePrint(void); #define IDC_RTFEDIT 1236




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