这是回忆起很久以前的事情了,一个遗留应用程序,VB6,在表单上使用标准的文本框控件。
当你开始输入文本时,它紧贴在左边缘。我想设置一个左边距,使第一个字符向内缩进一些。
网上有十几个示例,都是相同的,但没有一个能为我改变左边距。我可能做错了什么?
以下是标准示例和我正在使用的示例:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const EM_SETMARGINS = &HD3
Private Const EC_LEFTMARGIN = &H1
Private Const EC_RIGHTMARGIN = &H2
' Set the TextBox's margins.
Private Sub SetMargin(nLeft As Integer, nRight As Integer, lhWnd As Long)
Dim lLongValue As Long
'nRight needs to be in the hi-word, so we multiply by 65536
lLongValue = (&H10000 * nRight) + nLeft
SendMessage lhWnd, EM_SETMARGINS, EC_LEFTMARGIN Or EC_RIGHTMARGIN, lLongValue
End Sub
这绝对不会改变我在TextBox中文本的左边距。我尝试将值设置为10、100、1000和10000,但没有任何变化。TextBox的Alignment属性被设置为LeftJustify。我试过将Multiline设置为True或False。(某些示例表明必须将其设置为True)我尝试在Form_Load以及其他位置调用SetMargin()函数。
我一定是错过了什么很愚蠢的东西。但我已经查看并搜索了几个小时,无法找到缺失的部分。有没有人有任何想法?
添加我的测试情况。一个空的窗体,在其中只有一个TextBox和以下代码:
Option Explicit
Private Sub Form_Load()
SetMargin 100, 100, txtMargin.hwnd
End Sub
SetMargin 100, 100, Text1.hwnd
。 - Brian M Stafford