Сущевствуют функции для работы с принтером?

Тема в разделе "WASM.WIN32", создана пользователем hellobody, 27 май 2008.

  1. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    Привет всем! Никто не знает случайно, как распечатать страничку на принтере, программируя под win32? Пишу программу для учета принятого на сервисный центр товара... ехе-шник прикреплен ниже...
     
  2. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    Как всегда вопросы поражают своей полнотой. В моем понимании "программируя под win32", это написание приложений под виндовс, на каком либо языке. Чтобы ответить на ваш вопрос скажите на каком языке вы пишите свою программу?

    И научитесь пользоватся поисковиком.
    lib.csu.ru/DL/bases/prg/frolov/books/bsp/v14/ch6.htm
     
  3. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    я думал на wasm все пишут на ассемблере...
    пишу на ассемблере используя masm32...
     
  4. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    хотя какое значение имеет язык, API функции они и в Африке API функции...
    за ссылку спасибо! Вроде поможет мне...
    от гугла иногда просто устаёшь, и хочется задать вопрос человеку...
     
  5. jhons

    jhons New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2007
    Сообщения:
    26
    а там вроде как на принтер - такой же контекст открываешь как и на окошко, и выводишь в него аки и в окошко обычными bitblt например. печатает через invaliddate.
     
  6. Rito

    Rito New Member

    Публикаций:
    0
    Регистрация:
    30 май 2008
    Сообщения:
    59
    Всем привет. У меня такой вопрос, как организовать предварительный просмотр для печати? Как то же это делают.
     
  7. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Rito
    в 2 словах не объяснишь
    в MSDN по ключу "Printing and Print Spooler"
    а лучше Ч.ПЕТЗОЛЬД скачай, в сети есть, "программирование для вын95"
    называется - рульное чтиво!
     
  8. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    Есть у кого то фрагмент кода, пример вывода странички на печать? У Фроловых есть описание, вроде как просто все получаешь контекст устройства принтера и работаешь как с монитором с ним, но где взять все эти параметры: имя драйвера, имя устройства, какую библиотеку подключать если на С++, если на masm32 тогда какие инклуды и либы использовать?
     
  9. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    hellobody
    никаких драйверов!
    библиотека gdi32 стандартная для гуи приложений!
    имейте совесть, нормально в 2ух словах не объясниш, смотри пост выше
     
  10. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    ок, просто лопатить петзольда сегодня не охота, а вот если бы готовый исходничек под масм32, я бы сегодня уже продолжил прогу писать...
     
  11. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    Доброго дня! Спасибо wsd! Петзольд - тема!
    Код (Text):
    1. #include "windows.h"
    2. #include "winspool.h"
    3. #include "iostream"
    4. #include "wingdi.h"
    5. using namespace std;
    6. HDC GetPrinterDC(void);
    7. void PageGDICalls(HDC hdcPrn, int cxPage, int cyPage);
    8.  
    9.  
    10. int main()
    11. {
    12.     DOCINFO di = {sizeof (DOCINFO), L"FackePrint", NULL};
    13.    
    14.     HDC hdcPrint = GetPrinterDC();
    15.  
    16.     if(hdcPrint != NULL)
    17.     {
    18.         if(StartDoc(hdcPrint, &di) > 0)
    19.             if(StartPage(hdcPrint) > 0)
    20.                 if(EndPage(hdcPrint) > 0)
    21.                 PageGDICalls(hdcPrint, 500,500);
    22.                     EndDoc(hdcPrint);
    23.  
    24.         DeleteDC(hdcPrint);
    25.     }
    26.     return FALSE;
    27. }
    28. HDC GetPrinterDC(void)
    29. {
    30.     return CreateDC (NULL, L"EPSON Stylus C43 Series (Копия 1)", NULL, NULL);
    31. }
    32. void PageGDICalls(HDC hdcPrn, int cxPage, int cyPage)
    33. {
    34.     wchar_t *  szTextStr = L"Hello, Printer!";
    35.     SaveDC(hdcPrn);
    36.  
    37.     SetMapMode (hdcPrn, MM_ISOTROPIC);
    38.     SetWindowExtEx (hdcPrn, 1000, 1000, NULL);
    39.     SetViewportExtEx(hdcPrn, cxPage / 2, -cyPage / 2, NULL);
    40.     SetViewportOrgEx(hdcPrn, cxPage / 2, cyPage / 2, NULL);
    41.  
    42.     SetTextAlign(hdcPrn, TA_BASELINE | TA_CENTER);
    43.     TextOut(hdcPrn, 0, 0,(LPCWSTR)szTextStr, 20);
    44.     RestoreDC(hdcPrn, -1);
    45.  
    46.  
    47. }
    вот этот кодик, если вставить в VisualStudio2005, и нажать ctrl+shift+B, получится программка которая печатает на принтере строку текста...
     
  12. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    единственный нюанс - имя принтера, вам нужно вставить своё...
     
  13. hellobody

    hellobody New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2008
    Сообщения:
    48
    теперь буду переводить её на ассемблер...