Re: Программная печать текстового файла из MFC-приложения
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 28.08.17 06:03
Оценка:
И ещё вопрос: как программно выдать на печать текстовой файл из MFC-приложения?
Re: Программная печать равноширинным текстом
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 28.08.17 14:15
Оценка:
И ещё у меня вопрос: как осуществить программную печать равноширинным текстом?
Re[2]: Программная печать текстового файла из MFC-приложения
От: Nikita123 Россия  
Дата: 29.08.17 10:51
Оценка:
Здравствуйте, RussianFellow, Вы писали:
RF>И ещё вопрос: как программно выдать на печать текстовой файл из MFC-приложения?
Я думаю. что это не сложно. Прочитайте содержимое файла в контрол CEdit и печатайте его стандартными методами.
Подсказка: CEdit — наследник CWnd.
Желаю успеха,
Никита.
Re[11]: Программная печать из MFC-приложения
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 29.08.17 10:55
Оценка:
Здравствуйте, RussianFellow, Вы писали:

И ещё вопрос:

RF>Функция OnBnClickedOk класса CPrintSolvedNUDialog--в неё осуществляется вывод информации, находящейся в многострочном текстовом поле (класс CEdit) на принтер:


RF>
RF>void CPrintSolvedNUDialog::OnBnClickedOk()
RF>// если была нажата кнопка "Печать"
RF>{
RF>    // TODO: добавьте свой код обработчика уведомлений
RF>    int  i, n, cyChar, cyPage, yPos;
RF>    CString  myString;
RF>    LPCSTR  pzText;
RF>    LPTSTR  lpszText;
RF>    DWORD  size = MAX_PATH;
RF>    TCHAR  temp[MAX_PATH];
RF>    TEXTMETRIC  txtm;

RF>    m_IDC_EDIT1.GetWindowTextA(myString);
RF>    lpszText = "";
RF>    //n = myString.GetLength();
RF>    n = m_IDC_EDIT1.GetLineCount();
RF>    pzText = (LPCSTR)myString;
RF>    GetDefaultPrinter(temp,&size);    
RF>    HDC  hDC = CreateDC(NULL,temp,NULL,NULL);
RF>    if (hDC)
RF>    {
RF>        cyPage = GetDeviceCaps(hDC,VERTRES);
RF>        GetTextMetrics(hDC,&txtm);
RF>        cyChar = txtm.tmHeight + txtm.tmExternalLeading;
RF>        yPos = 0;
RF>        DOCINFO  docinfo;
RF>        docinfo.cbSize = sizeof(docinfo);
RF>        docinfo.lpszDocName = "Simple";
RF>        docinfo.lpszOutput = NULL;
RF>        docinfo.lpszDatatype = "EMF";
RF>        docinfo.fwType = 0;
RF>        if (StartDoc(hDC,&docinfo)>0)
RF>        {
RF>            if (StartPage(hDC)>0)
RF>            {
RF>                //TextOut(hDC,0,0,pzText,80);
RF>                for (i=0; i<n; i++)
RF>                {
RF>                    //m_IDC_EDIT1.GetLine(i,lpszText);
RF>                    int  len = m_IDC_EDIT1.LineLength(i);
RF>                    if (len>0)
RF>                    {
RF>                        m_IDC_EDIT1.GetLine(i,myString.GetBuffer(len),len);
RF>                        myString.ReleaseBuffer();
RF>                    }
RF>                    else
RF>                        myString = " ";
RF>                    myString = myString + "\r\n";
RF>                    pzText = myString.GetBuffer();
RF>                    TextOut(hDC,0,yPos,pzText,90);
RF>                    yPos += cyChar;
RF>                }
RF>                EndPage(hDC);
RF>            }
RF>            EndDoc(hDC);
RF>        }
RF>        DeleteDC(hDC);
RF>    }
RF>    CDialogEx::OnOK();
RF>}
RF>


Вопрос состоит в следующем: как задать определённый шрифт для печати (например, Courier New) с определённым размером (высотой)--например, 10 ?
Re[3]: Программная печать текстового файла из MFC-приложения
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 29.08.17 11:06
Оценка:
Здравствуйте, Nikita123, Вы писали:

N>Я думаю. что это не сложно. Прочитайте содержимое файла в контрол CEdit и печатайте его стандартными методами.

N>Подсказка: CEdit — наследник CWnd.

Я решил это по-другому (фрагмент кода):

if (StartDoc(hDC,&docinfo)>0)
{
    if (StartPage(hDC)>0)
    {
        f = fopen("results.txt","rt");
        while (!feof(f))
        {
            fgets(s,256,f);
            len = strlen(s);
            pzText = (LPCSTR)s;
            TextOut(hDC,0,yPos,pzText,len);
            yPos += cyChar;
        }
        fclose(f);
        EndPage(hDC);
    }
    EndDoc(hDC);
}
Re[2]: Программная печать равноширинным текстом
От: Evgeniy Skvortsov Россия  
Дата: 30.08.17 06:23
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>И ещё у меня вопрос: как осуществить программную печать равноширинным текстом?


hFont = CreateFont([требуемые параметры шрифта])
printerDC.SelectObject(hFont)
Re: Программная печать из MFC-приложения
От: kov_serg Россия  
Дата: 30.08.17 07:00
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Есть диалоговое интерфейсное MFC-приложение.

RF>Как правильно организовать из него программную печать информации на принтер?

Так не устраивает?
https://msdn.microsoft.com/ru-ru/library/76a787xf.aspx#code-snippet-26
https://msdn.microsoft.com/en-us/library/windows/desktop/bb787875(v=vs.85).aspx#code-snippet-1
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.