'Примечание: Microsoft RichTextBox обеспечивает печать самого себя с 'помощью метода .SelPrint. К сожалению, данный метод не позволяет никоим 'образом вмешаться в процесс, например для печати на загловков страницы или 'установки отступов от края листа. Данный пример решает эту проблему, т.к. 'теперь Вы имеете полный контроль над процессом печати.
Public Type RECT Left As Long
Top As Long Right As Long Bottom As Long
End Type
Public Type CharRange cpMin As Long ' First character of range (0 For start of doc)
cpMax As Long ' Last character of range (-1 For End of doc) End Type
Public Type FormatRange hdc As Long ' Actual DC To draw On
hdcTarget As Long ' TarGet DC For determining text formatting rc As RECT ' Region of the DC To draw To (in twips)
rcPage As RECT ' Region of the entire DC (page size) (in twips) chrg As CharRange ' Range of text To draw (see above declaration)
End Type
Public Const LOGPIXELSX = 88 Public Const LOGPIXELSY = 90 Public Const PHYSICALOFFSETX As Long = 112
Public Const PHYSICALOFFSETY As Long = 113
Public Const WM_USER As Long = &H400
Public Const EM_FORMATRANGE As Long = WM_USER + 57
Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wp As Long, lp As Any) As Long
Public Sub PrintRTF(rtf As RichTextBox, LeftMarginWidth As Long, TopMarginHeight, RightMarginWidth, BottomMarginHeight) Dim LeftOffset As Long, TopOffset As Long
Dim LeftMargin As Long, TopMargin As Long Dim RightMargin As Long, BottomMargin As Long
Dim fr As FormatRange Dim rcDrawTo As RECT, rcPage As RECT Dim TextLength As Long, NextCharPos As Long
NextCharPos = 0 Printer.ScaleMode = vbTwips
' Get the offsett To the printable area On the page in twips LeftOffSet = GetDeviceCaps(Printer.hdc, PHYSICALOFFSETX) / GetDeviceCaps(Printer.hdc, LOGPIXELSX) * 1440 TopOffSet = GetDeviceCaps(Printer.hdc, PHYSICALOFFSETY) / GetDeviceCaps(Printer.hdc, LOGPIXELSY) * 1440
' Calculate the Left, Top, Right, And Bottom margins
Если Вас заинтересовала или понравилась информация программирование на Visual Basic - "Печать RichTextBox-контрола", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!