Вот этот пример у меня работает:
заполняю мой m_IDC_EDIT1 пятью одинаковыми строками по 80 символов:
BOOL CPrintSolvedNUDialog::OnInitDialog()
{
char s[1024];
CDialog::OnInitDialog();
strcpy(s,"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab");
strcat(s,"\r\n");
strcat(s,"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab");
strcat(s,"\r\n");
strcat(s,"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab");
strcat(s,"\r\n");
strcat(s,"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab");
strcat(s,"\r\n");
strcat(s,"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab");
m_IDC_EDIT1.SetWindowTextA(s);
return TRUE;
}
и выдаю их на печать:
void CPrintSolvedNUDialog::OnBnClickedOk()
// если была нажата кнопка "Печать"
{
// TODO: добавьте свой код обработчика уведомлений
int i, n, cyChar, cyPage, yPos;
CString myString;
LPCSTR pzText;
LPTSTR lpszText;
DWORD size = MAX_PATH;
TCHAR temp[MAX_PATH];
TEXTMETRIC txtm;
m_IDC_EDIT1.GetWindowTextA(myString);
lpszText = "";
//n = myString.GetLength();
n = m_IDC_EDIT1.GetLineCount();
pzText = (LPCSTR)myString;
GetDefaultPrinter(temp,&size);
HDC hDC = CreateDC(NULL,temp,NULL,NULL);
if (hDC)
{
cyPage = GetDeviceCaps(hDC,VERTRES);
GetTextMetrics(hDC,&txtm);
cyChar = txtm.tmHeight + txtm.tmExternalLeading;
yPos = 0;
DOCINFO docinfo;
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = "Simple";
docinfo.lpszOutput = NULL;
docinfo.lpszDatatype = "EMF";
docinfo.fwType = 0;
if (StartDoc(hDC,&docinfo)>0)
{
if (StartPage(hDC)>0)
{
//TextOut(hDC,0,0,pzText,80);
for (i=0; i<n; i++)
{
//m_IDC_EDIT1.GetLine(i,lpszText);
int len = m_IDC_EDIT1.LineLength(i);
m_IDC_EDIT1.GetLine(i,myString.GetBuffer(len),len);
myString.ReleaseBuffer();
myString = myString + "\r\n";
pzText = myString.GetBuffer();
TextOut(hDC,0,yPos,pzText,80);
yPos += cyChar;
}
EndPage(hDC);
}
EndDoc(hDC);
}
DeleteDC(hDC);
}
CDialogEx::OnOK();
}
В результате выводятся на принтер пять одинаковых строк!
1613 г. = 2024 г.