Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Принтер: усовершенствовать вывод текста Добавлено: 07.07.05 23:54  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru
Привет всем!
Достался мне тут на днях принтер старенький (зато нахаляву :), решил чё нить замутить полезного на бейсике, а то какой понт из ворда печатать :)?
Проблемка возникла с выводом текста. Вобщем то всё нормально, но хотелось бы кое чего получше.
Перерыл форум через поиск, точнее все тамы со словом "Принтер". Ничего к сожалению полезного не встретил. В факах нашёл только это (http://www.vbnet.ru/faq/showtopic.asp?id=439), но это похоже не по моеё части пока :(
Короче, я делаю вывод так:


Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As DOC_INFO_1) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Type DOC_INFO_1
        pDocName As String
        pOutputFile As String
        pDatatype As String
End Type
Const s As String = "Hello World!"

Private Sub Command1_Click()
Dim hPrinter As Long
Dim jobID As Long
Dim Res As Long
Dim Written As Long
Dim PrintData As String
Dim DocInfo As DOC_INFO_1
Res = OpenPrinter(Printer.DeviceName, hPrinter, 0)
If Res = 0 Then
    MsgBox "Unable to print the page", vbCritical, "Another fuckup happened"
    End
End If
DocInfo.pDocName = "HelloWorld"
DocInfo.pOutputFile = vbNullString
DocInfo.pDatatype = vbNullString
jobID = StartDocPrinter(hPrinter, 1, DocInfo)
StartPagePrinter hPrinter
PrintData = s & vbFormFeed
WritePrinter hPrinter, ByVal PrintData, Len(PrintData), Written
EndPagePrinter hPrinter
EndDocPrinter hPrinter
ClosePrinter hPrinter
End Sub


Всё работает на ура, а как мне сделать вывод текста, аналогичный TextOut? Можно ли вообще тут использовать всякие DrawText'ы и если да, то как? Никто не знает? есть пример?
Заранее благодарен.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #1 Добавлено: 08.07.05 00:11
nu a che tebe ne nravit`sya t VB'shnym standartnym Priner objektom? cherez nego mozhno, i normal`n opo moemu rabotaet

Ответить

Номер ответа: 2
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #2 Добавлено: 08.07.05 00:11
nu a che tebe ne nravit`sya t VB'shnym standartnym Priner objektom? cherez nego mozhno, i normal`no po moemu rabotaet

Ответить

Номер ответа: 3
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 08.07.05 00:39
Спасибо, просто недолюбливую я его... а как им вывести текст заданного размера и шрифта в нужных координатах?

Ответить

Номер ответа: 4
Автор ответа:
 Softer



ICQ: 203660381  

Вопросов: 29
Ответов: 205
 Web-сайт: hware.org.ua
 Профиль | | #4
Добавлено: 08.07.05 04:57
Printer.CurrentX - координата по горизонтали
Printer.CurrentY - --//-- по вертикали
Printer.Font.Size - без коментариев
Printer.Font.Italic - --//--
Printer.Font.Underline - --//--
Printer.Print - вывод на печать

printer.paintpicture (или чет в таком роде) - вывод графики.

ЗЫ: Вообще методов и свойств больше (например, смена принтера по-умолчанию,ето настроек), но я пока использую только эти.

Ответить

Номер ответа: 5
Автор ответа:
 Softer



ICQ: 203660381  

Вопросов: 29
Ответов: 205
 Web-сайт: hware.org.ua
 Профиль | | #5
Добавлено: 08.07.05 05:00
Кстати, а не мог бы ты объяснить, че ето у тебя за способ печати? Можно почтой или аськой:
SofterSoft@narod.ru
203-660-381

Ответить

Номер ответа: 6
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #6 Добавлено: 08.07.05 09:44
Там в библиотеке кодов (ссылка на второй код с главной страницы) есть код печать RichTextBox. Хоть и глючный, но принцип посмотреть можно.

Ответить

Номер ответа: 7
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #7
Добавлено: 08.07.05 16:54
Блин, тут на месте этого ответа, то есть под номером семь, должен был мой находиться :(((
Павел, UU, вы не стирали случайно???

2 Александр
вот эта ссылка? http://www.vbnet.ru/faq/showtopic.asp?id=439

Да, вещь хорошая, и скорее всего пригодится... когда нить. Я же щас пытаюсь понять принцип печати через АПИ и работе со спулером (или без него) более досконально, начав с простого вывода текста... пока к сожалению не выходит.

Ответить

Номер ответа: 8
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #8 Добавлено: 09.07.05 01:57
poprobuj zamenit`
ByVal PrintData
na
ByRef PrintData

Ответить

Номер ответа: 9
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #9
Добавлено: 09.07.05 02:25
а для чего это? мой код полностью рабочий, но я ищу другое

Ответить

Номер ответа: 10
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #10 Добавлено: 10.07.05 11:29
na, vzglyani. po moemu po teme:
http://www.verifiedsoftware.com/downloads/bmp.htm

Ответить

Номер ответа: 11
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #11 Добавлено: 10.07.05 11:30
a voobshe, idem v www.google.com, i pishem:
+API +WritePrinter
davim na Enter, i smotrim ;)

Ответить

Номер ответа: 12
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #12
Добавлено: 10.07.05 20:38
Да, хитрая вещь, оказывается WritePrinter может и большее. Это же довольно низкоуровневая функция?
Мне просто покой не даёт тот факт, что раз у принтера есть свойство .hDC то вывод на нём мало чем должен отличаться от вывода на монитор. Похоже на правду? все операции записываются в журнал и вооплащаются в жизнь при вызове EndPage... хорошо если бы работало... Лады не ругайтесь за тупость- я только начинаю с печатью работать. если допру как сделать более или менее красиво-сразу сообщу

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам