Как напечатать текст из RichTextBox, с форматированием?
Форма: Option Explicit
Private Sub Command1_Click() PrintRTF RichTextBox1, 1440, 1440, 1440, 1440 End Sub
Модуль: Option Explicit Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type CharRange cpMin As Long cpMax As Long End Type Private Type FormatRange hDC As Long hdcTarget As Long rc As RECT rcPage As RECT chrg As CharRange End Type Private Const LOGPIXELSX = 88 Private Const LOGPIXELSY = 90 Private Const PHYSICALOFFSETX As Long = 112 Private Const PHYSICALOFFSETY As Long = 113 Private Const WM_USER As Long = &H400 Private Const EM_FORMATRANGE As Long = WM_USER + 57 Private Declare Function GetDeviceCaps Lib "gdi32" _ (ByVal hDC As Long, ByVal nIndex As Long) As Long Private 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 Declare Function DrawText Lib "user32" Alias "DrawTextA" _ (ByVal hDC As Long, _ ByVal lpStr As String, _ ByVal nCount As Long, _ lpRect As RECT, _ ByVal wFormat As Long) As Long
Public Sub PrintRTF(rtf As RichTextBox, LeftMarginWidth As Long, _ TopMarginHeight, RightMarginWidth, BottomMarginHeight, Optional Text$) Dim LeftOffset&, TopOffset&, LeftMargin&, TopMargin& Dim RightMargin&, BottomMargin& Dim rcDrawTo As RECT, rcPage As RECT Dim TextLength&, NextCharPos& Dim fr As FormatRange, Page&, tmp$
Public Function MakeRect(Left&, Top&, Right&, Bottom&) As RECT With MakeRect .Bottom = Bottom .Left = Left .Right = Right .Top = Top End With End Function