Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Печать в C++ (вывод по милиметрам)

2.0K
30 ноября 2003 года
CyberEx
74 / / 30.11.2003
Мне нужно, просто необходимо, распечатать документ,содержащий текст и графику, в точности по милиметрам.
ПОНЯТИЯ НЕ ИМЕЮ КАК ЭТО СДЕЛАТЬ!!!!!!!!!!!!!!!
319
01 декабря 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by CyberEx
Мне нужно, просто необходимо, распечатать документ,содержащий текст и графику, в точности по милиметрам.
ПОНЯТИЯ НЕ ИМЕЮ КАК ЭТО СДЕЛАТЬ!!!!!!!!!!!!!!!


При печати задаешь режим контекста:

 
Код:
dc.SetMapMode(MM_LOMETRIC);
или
dc.SetMapMode(MM_HIMETRIC);

и вывод идет в долях милиметра.
2.0K
01 декабря 2003 года
CyberEx
74 / / 30.11.2003
Спасибо большое за помощь,но как вообще что-то ваводить на печать,и как создадавать документ, размеченный по миллиметрам.
5.1K
02 декабря 2003 года
alser
7 / / 27.10.2003
Скачай отсюда
http://www.rusdoc.ru/reviews/programming/api/
книгу Ч. Петцольда и почитай
2.0K
02 декабря 2003 года
CyberEx
74 / / 30.11.2003
Цитата:
Originally posted by alser
Скачай отсюда
http://www.rusdoc.ru/reviews/programming/api/
книгу Ч. Петцольда и почитай



Ну скачал я эту книгу, но она англо-китайская.
ЧТО ЭТО ТАКОЕ????????????????????????????????
И как сделать англо-РУССКУЮ
X)-

5.1K
03 декабря 2003 года
alser
7 / / 27.10.2003
Хоть убей, точно не помню, что я делал для нормального вида (давно это было). Попробуй следующее:
Внеси изменения в реестр (изменения выделены):
Если Win98/Me

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="cp_1251.nls"
"1251"="cp_1251.nls"
"1252"="cp_1251.nls"
"1253"="cp_1251.nls"
"1254"="cp_1251.nls"
"1255"="cp_1251.nls"

Если NT/2000/XP

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]

"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"
"1254"="c_1251.nls"

После этого следует перезагрузиться.

Если это не поможет, то попробуй открыть вордом из комплекта офиса 95.
319
03 декабря 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by xelos

При печати задаешь режим контекста:
 
Код:
dc.SetMapMode(MM_LOMETRIC);
или
dc.SetMapMode(MM_HIMETRIC);

и вывод идет в долях милиметра.


Если в MFC печатаешь, то там отдельная история как это делать, если через WinAPI, то там всего 5 команд для печати.

Код:
CDC dc;
    HDC hDC;
    CPrintDialog dlgPrint(TRUE);
    dlgPrint.GetDefaults();
   
    if (!(hDC = dlgPrint.CreatePrinterDC())){
        AfxMessageBox(_T("Нету принтера"));
        return;
    }else{
        DeleteDC(hDC);
        LPDEVMODE pDevMode = dlgPrint.GetDevMode();
        pDevMode->dmOrientation = DMORIENT_LANDSCAPE;

        if (!dc.Attach(dlgPrint.CreatePrinterDC())){
            AfxMessageBox (_T("Проблемы с принтером"));
        return;
        };
     

        DOCINFO docinfo;
        memset(&docinfo, 0, sizeof(docinfo));
        docinfo.cbSize = sizeof(docinfo);
        docinfo.lpszDocName = _T("Test");

        if (dc.StartDoc(&docinfo) < 0){
            MessageBox("Can't start printer","Erreur",MB_OK);
        }else{
            if (dc.StartPage() < 0){
                MessageBox(_T("Could not start page"));
                dc.AbortDoc();
            }else{
                        dc.SetMapMode(MM_LOMETRIC);
                         //формируешь страницу на печать
                    dc.EndPage();
                  };
               dc.EndDoc();//конец печати
              };
         };


что-нибудь вроде такого.
2.0K
03 декабря 2003 года
CyberEx
74 / / 30.11.2003
СПАСИБО ОГРОМНОЕ ЗАПОМОЩЬ!!!!!!!!!!!!!!!!!!!!!!!!
*************************************************
Хочу задать вопрос не в тему.
Как убрать клетку и MS Word XP, Win XP??
*************************************************
Как вы водить на печать я понял, как сделать чтобы он печатался в доля милиметра я тоже понял,
НО Каа формировать документ размеченный по миллиметрам, например чтобы от одной фразы до другой было 35мм и т.п.??????????????????????
..............................................
P.S.Измения в реестре тоже помогли.
319
04 декабря 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by CyberEx
СПАСИБО ОГРОМНОЕ ЗАПОМОЩЬ!!!!!!!!!!!!!!!!!!!!!!!!
*************************************************
Хочу задать вопрос не в тему.
Как убрать клетку и MS Word XP, Win XP??
*************************************************
Как вы водить на печать я понял, как сделать чтобы он печатался в доля милиметра я тоже понял,
НО Каа формировать документ размеченный по миллиметрам, например чтобы от одной фразы до другой было 35мм и т.п.??????????????????????
..............................................
P.S.Измения в реестре тоже помогли.


Когда печатаешь в милиметрах, например TextOut(x,y,string) х и у задаются в долях милиметра.
допустим у тебя две фразы есть, которые надо напечатать с расстоянием 35 мм между 2 фразами на одной линии.
Первую фразу печатаешь где хочешь, для второй фразы координата у такая же как и у первой, а х вычисляешь как х первой фразы + длина первой фразы в логических единицах + 35 мм. Т.е.

 
Код:
CDC dc; // инициализация dc
dc.SetMapMode(MM_HIMETRIC);
CSize size;
CString string1, string2;
int x1,x2,y1,y2;
size= dc.GetTextExtend(&string1); //в сх у нас длиина строки, в су - высота
х2=х1 + size.cx + 35*(доли милиметров, не помню какие доли при HI_METRIC)

вот вроде и все. Или тебе что-то другое надо делать?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог