Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Переходим на https. Просьба писать обо всех замеченных неисправностях.
  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как распечатать диалоговое окно (MFC) ?  (Прочитано 9556 раз)
0 Пользователей и 1 Гость смотрят эту тему.
bebabo
Помогающий

ru
Offline Offline

WWW
« : 18-02-2008 08:39 » 

всем привет!
подскажите пожалуйста - есть диалоговое окно с полями ввода данных - как его распечатать? (т.е. чтобы на распечатке был сам вид диалогового окна и введенные пользователем данные). разобрался только как вызвать окно выбора принтера (CPrintDialog), а дальше что-то никак не соображу.
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 18-02-2008 11:41 » 

Практически тебе надо повторить OnPaint только для DC принтера.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Ahemaz
Гость
« Ответ #2 : 07-04-2008 18:12 » 

Мне очень стыдно, но я спрошу... Использовал ниже приведённый код для печати, однако принтер печатает только черту с края листа. В чём ошибка?
void CTestDlg::OnSend()
{   
CPrintDialog cp(FALSE);               
if (cp.DoModal()==IDOK)               

  CDC PrintDC;                     
  PrintDC.Attach(cp.GetPrinterDC());               
  DOCINFO infStru;                     
  ::ZeroMemory (&infStru, sizeof (DOCINFO));         
   CString title="step 45 ";               
  infStru.cbSize = sizeof (DOCINFO);               
  infStru.lpszDocName=title;
  infStru.lpszOutput=NULL;
  if (PrintDC.StartDoc(&infStru )==-1)AfxMessageBox("Error StartDoc") ;  PrintDC.StartPage();                  
  PrintDC.MoveTo(10,10);                  
  PrintDC.LineTo(100,100);
  if (PrintDC.EndPage()<0) AfxMessageBox("Error EndPage");      
  if (PrintDC.EndDoc()==0) AfxMessageBox("Error EndDoc");      
  PrintDC.Detach();                  }
}
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 07-04-2008 18:49 » 

Цитата
PrintDC.MoveTo(10,10);                 
PrintDC.LineTo(100,100);
Ну так ты его только линию напечатать и просишь, насколько я понял.
Записан
Ahemaz
Гость
« Ответ #4 : 07-04-2008 18:50 » 

Пардон, ступил по страшному, всё верно. Просто запутался в размерах.
Записан
Ahemaz
Гость
« Ответ #5 : 08-04-2008 08:06 » 

Ещё один вопрос: как можно распечатать переменную типа float?
Пробовал спомощью TextOut(), но он печатает только невнятный квадрат
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 08-04-2008 08:31 » 

Полагаю, сконвертировать в строку, распечатать строку Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 08-04-2008 08:38 » 

это можно так
CString txt;
float f;
double d;
txt.Format("%f,%fl",f,d)
Записан

Ahemaz
Гость
« Ответ #8 : 08-04-2008 17:55 » 

Что-то не пелучается - результат при печати прежний. Может быть существует другой способ?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 08-04-2008 18:04 » 

Ahemaz, а что ты делал ? ) Что именно не получилось ?
Записан

Ahemaz
Гость
« Ответ #10 : 08-04-2008 20:47 » 

Большое спасибо за помощь)) сбило с толку d, так и не понял для чего оно) В результате получил
CString txt;
float f=123.32;
txt.Format("%f",f);
PrintDC.TextOut(100,200,txt);
Всё работает
P.S.ещё раз спасибо)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 08-04-2008 20:52 » 

d - это там переменная типа double. Для неё знак форматирования %fl  , я просто пример показал)
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines