이 문서의 예제 코드는 VB TextBox 텍스트 상자를 세로로 가운데에 맞추는 효과를 얻을 수 있습니다. 참고: Form_Load() 양식 코드의 여러 줄 속성 설정은 true여야 합니다. 즉, Text1.MultiLine = True입니다. 이 속성은 디자인 타임에 수정하세요. 후속 코드로 방패를 직접 수정할 수 있습니다. 이 함수를 호출하면 됩니다.
구체적인 기능 코드는 다음과 같습니다.
'================================================ = ==========================='| 텍스트 상자가 중앙에 표시됩니다. '==== ============================================ ===== ===========================옵션 ExplicitPrivate 유형 RECT 왼쪽이 긴 위쪽 LongEnd만큼 긴 오른쪽 TypePrivate 선언 함수 SendMessage Lib "user32 " Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate 선언 함수 SetWindowText Lib "user32 " 별칭 "SetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String) As LongPrivate 선언 함수 CallWindowProc Lib "user32" 별칭 "CallWindowProcA"(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate 선언 함수 GetWindowLong Lib "user32" Alias "GetWindowLongA "(ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate 선언 함수 SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const EM_GETRECT = &HB2Private Const EM_SETRECTNP = &HB4Private Const GWL_WNDPROC = (-4) 민간 상수 WM_CHAR = &H102Private Const WM_PASTE As Long = &H302Private prevWndProc As LongPublic ClipText As StringPublic Sub 비활성화Ability(TargetTextBox As TextBox) prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC) SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProcEnd SubPrivate 함수 WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim Temp As String Select Case Msg Case WM_CHAR If wParam <> 13 Then WndProc = CallWindowProc(prevWndProc , hwnd, Msg, wParam, lParam) 사례 WM_PASTE ClipText = Clipboard.GetText Temp = 바꾸기(ClipText, Chr(10), "") Temp = 바꾸기(Temp, Chr(13), "") Clipboard.Clear Clipboard.SetText Temp WndProc = CallWindowProc(prevWndProc, hwnd, Msg , wParam, lParam) Clipboard.Clear Clipboard.SetText ClipText Case Else WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) End SelectEnd FunctionSub VerMiddleText(mForm As form, mText As TextBox) mText.MultiLine = False인 경우 Sub Dim rc As RECT, tmpTop As Long, tmpBot As 종료 긴 SendMessage mText.hwnd, EM_GETRECT, 0, rc With mForm.Font .Name = mText.Font.Name .Size = mText.Font.Size .Bold = mText.Font.Bold End With tmpTop = ((rc.Bottom - rc.Top) - _ ( mText.Parent.TextHeight("H ") / Screen.TwipsPerPixelY)) / 2 + 2 tmpBot = ((rc.Bottom - rc.Top) + _ (mText.Parent.TextHeight("H ") / Screen.TwipsPerPixelY)) / 2 + 2 rc.Top = tmpTop rc.Bottom = tmpBot mText.Alignment = vbCenter SendMessage mText.hwnd, EM_SETRECTNP, 0&, rc mText.Refresh 비활성화 능력 mTextEnd 보결'//////////////////////////////////////////////// /// ///////'다음과 같은 형태입니다 암호'//////////////////////////////////////////////// /// ///////사적인 하위 Form_Load() '================주의! ! ! ================= '여러 줄 속성은 true여야 하며 Text1.MultiLine = True '이 속성은 읽기 전용 속성입니다. 디자인 타임에 수정하십시오.' 코드 차단, 차단하고 싶지 않다면 직접 수정할 수 있습니다'=============================== ============= == '이 함수를 호출하세요 VerMiddleText Me, Text1 Caption = Len(Text1)End Sub