Option ExplicitPublic Const MAX_TAB_STOPS = 32& Public Const lDefaultTab = 720&Public Enum ERECParagraphLineSpacingConstants ercLineSpacingSingle = 0 ercLineSpacingOneAndAHalf = 1 ercLineSpacingDouble = 2 ercLineSpacingTwips = 3 ercLineSpacingTwipsAnyMinimum = 4 ercLineSpacingTwentiethLine = 5 End EnumPublic Type PARAFORMAT2 cbSize As Integer wPad1 As Integer dwMask As Long wNumbering As Integer wReserved As Integer dxStartIndent As Long dxRightIndent As Long dxOffset As Long wAlignment As Integer cTabCount As Integer 'rgxTabs(0 To MAX_TAB_STOPS - 1) As Byte 'lPtrRgxTabs As Long lTabStops(0 To MAX_TAB_STOPS - 1) As Long dySpaceBefore As Long ' /* Vertical spacing before para */ dySpaceAfter As Long ' /* Vertical spacing after para */ dyLineSpacing As Long ' /* Line spacing depending on Rule */ sStyle As Integer ' /* Style handle */ bLineSpacingRule As Byte ' /* Rule for line spacing (see tom.doc) */ bCRC As Byte ' /* Reserved for CRC for rapid searching * wShadingWeight As Integer ' /* Shading in hundredths of a per cent */ wShadingStyle As Integer ' /* Nibble 0: style, 1: cfpat, 2: cbpat */ wNumberingStart As Integer ' /* Starting value for numbering */ wNumberingStyle As Integer ' /* Alignment, roman/arabic, (), ), ., etc.*/ wNumberingTab As Integer ' /* Space bet 1st indent and 1st-line text*/ wBorderSpace As Integer ' /* Space between border and text (twips)*/ wBorderWidth As Integer ' /* Border pen width (twips) */ wBorders As Integer ' /* Byte 0: bits specify which borders */ ' /* Nibble 2: border style, 3: color index*/ End TypePublic Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function SendMessageStr Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Private Const PFM_SPACEBEFORE = &H40& Private Const PFM_SPACEAFTER = &H80& Private Const PFM_LINESPACING = &H100& Private Const PFM_STYLE = &H400& Private Const PFM_BORDER = &H800& ' /* (*) */ Private Const PFM_SHADING = &H1000& ' /* (*) */ Private Const PFM_NUMBERINGSTYLE = &H2000& ' /* (*) */ Private Const PFM_NUMBERINGTAB = &H4000& ' /* (*) */ Private Const PFM_NUMBERINGSTART = &H8000& ' /* (*) */Public Const WM_USER = &H400 Public Const EM_GETPARAFORMAT = (WM_USER + 61) Public Const EM_SETPARAFORMAT = (WM_USER + 71)Public Sub GetParagraphLineSpacing(m_hWnd As Long, _ ByRef eLineSpacingStyle As ERECParagraphLineSpacingConstants, _ ByRef ySpacing As Long _ ) Dim tCF2 As PARAFORMAT2 Dim lR As Long tCF2.dwMask = PFM_LINESPACING tCF2.cbSize = Len(tCF2) lR = SendMessage(m_hWnd, EM_GETPARAFORMAT, 0, tCF2) eLineSpacingStyle = tCF2.bLineSpacingRule ySpacing = tCF2.dyLineSpacing End SubPublic Sub SetParagraphLineSpacing(m_hWnd As Long, _ ByVal eLineSpacingStyle As ERECParagraphLineSpacingConstants, _ ByVal ySpacing As Long _ ) Dim tCF2 As PARAFORMAT2 Dim lR As Long tCF2.dwMask = PFM_LINESPACING tCF2.cbSize = Len(tCF2) tCF2.bLineSpacingRule = eLineSpacingStyle tCF2.dyLineSpacing = ySpacing lR = SendMessage(m_hWnd, EM_SETPARAFORMAT, 0, tCF2) End Sub窗体代码: Option ExplicitPrivate Sub Command1_Click() '获取行距(&G) Dim lngSpacing As Long GetParagraphLineSpacing RichTextBox1.hwnd, ercLineSpacingTwentiethLine, lngSpacing Text1.Text = lngSpacing End SubPrivate Sub Command2_Click() '打开文件(&O) CommonDialog1.Filter = "*.rtf|*.rtf|*.*|*.*" CommonDialog1.ShowOpen RichTextBox1.FileName = CommonDialog1.FileName End SubPrivate Sub Command3_Click() '设置行距(&S) SetParagraphLineSpacing RichTextBox1.hwnd, ercLineSpacingTwentiethLine, Val(Text2.Text) End Sub
Public Const lDefaultTab = 720&Public Enum ERECParagraphLineSpacingConstants
ercLineSpacingSingle = 0
ercLineSpacingOneAndAHalf = 1
ercLineSpacingDouble = 2
ercLineSpacingTwips = 3
ercLineSpacingTwipsAnyMinimum = 4
ercLineSpacingTwentiethLine = 5
End EnumPublic Type PARAFORMAT2
cbSize As Integer
wPad1 As Integer
dwMask As Long
wNumbering As Integer
wReserved As Integer
dxStartIndent As Long
dxRightIndent As Long
dxOffset As Long
wAlignment As Integer
cTabCount As Integer
'rgxTabs(0 To MAX_TAB_STOPS - 1) As Byte
'lPtrRgxTabs As Long
lTabStops(0 To MAX_TAB_STOPS - 1) As Long
dySpaceBefore As Long ' /* Vertical spacing before para */
dySpaceAfter As Long ' /* Vertical spacing after para */
dyLineSpacing As Long ' /* Line spacing depending on Rule */
sStyle As Integer ' /* Style handle */
bLineSpacingRule As Byte ' /* Rule for line spacing (see tom.doc) */
bCRC As Byte ' /* Reserved for CRC for rapid searching *
wShadingWeight As Integer ' /* Shading in hundredths of a per cent */
wShadingStyle As Integer ' /* Nibble 0: style, 1: cfpat, 2: cbpat */
wNumberingStart As Integer ' /* Starting value for numbering */
wNumberingStyle As Integer ' /* Alignment, roman/arabic, (), ), ., etc.*/
wNumberingTab As Integer ' /* Space bet 1st indent and 1st-line text*/
wBorderSpace As Integer ' /* Space between border and text (twips)*/
wBorderWidth As Integer ' /* Border pen width (twips) */
wBorders As Integer ' /* Byte 0: bits specify which borders */
' /* Nibble 2: border style, 3: color index*/
End TypePublic Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SendMessageStr Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const PFM_SPACEBEFORE = &H40&
Private Const PFM_SPACEAFTER = &H80&
Private Const PFM_LINESPACING = &H100&
Private Const PFM_STYLE = &H400&
Private Const PFM_BORDER = &H800& ' /* (*) */
Private Const PFM_SHADING = &H1000& ' /* (*) */
Private Const PFM_NUMBERINGSTYLE = &H2000& ' /* (*) */
Private Const PFM_NUMBERINGTAB = &H4000& ' /* (*) */
Private Const PFM_NUMBERINGSTART = &H8000& ' /* (*) */Public Const WM_USER = &H400
Public Const EM_GETPARAFORMAT = (WM_USER + 61)
Public Const EM_SETPARAFORMAT = (WM_USER + 71)Public Sub GetParagraphLineSpacing(m_hWnd As Long, _
ByRef eLineSpacingStyle As ERECParagraphLineSpacingConstants, _
ByRef ySpacing As Long _
)
Dim tCF2 As PARAFORMAT2
Dim lR As Long
tCF2.dwMask = PFM_LINESPACING
tCF2.cbSize = Len(tCF2)
lR = SendMessage(m_hWnd, EM_GETPARAFORMAT, 0, tCF2)
eLineSpacingStyle = tCF2.bLineSpacingRule
ySpacing = tCF2.dyLineSpacing
End SubPublic Sub SetParagraphLineSpacing(m_hWnd As Long, _
ByVal eLineSpacingStyle As ERECParagraphLineSpacingConstants, _
ByVal ySpacing As Long _
)
Dim tCF2 As PARAFORMAT2
Dim lR As Long
tCF2.dwMask = PFM_LINESPACING
tCF2.cbSize = Len(tCF2)
tCF2.bLineSpacingRule = eLineSpacingStyle
tCF2.dyLineSpacing = ySpacing
lR = SendMessage(m_hWnd, EM_SETPARAFORMAT, 0, tCF2)
End Sub窗体代码:
Option ExplicitPrivate Sub Command1_Click()
'获取行距(&G)
Dim lngSpacing As Long
GetParagraphLineSpacing RichTextBox1.hwnd, ercLineSpacingTwentiethLine, lngSpacing
Text1.Text = lngSpacing
End SubPrivate Sub Command2_Click()
'打开文件(&O)
CommonDialog1.Filter = "*.rtf|*.rtf|*.*|*.*"
CommonDialog1.ShowOpen
RichTextBox1.FileName = CommonDialog1.FileName
End SubPrivate Sub Command3_Click()
'设置行距(&S)
SetParagraphLineSpacing RichTextBox1.hwnd, ercLineSpacingTwentiethLine, Val(Text2.Text)
End Sub