假设某一文本为 
xxx
yyy 
VB程序中有两个文本框,暂且叫做左文本框和右文本框 
复制文本后 
如何在VB中实现在左文本框中粘贴后xxx被粘贴到左文本框,yyy被粘贴到右文本框,也就是说回车被去掉

解决方案 »

  1.   

    窗体代码:
    Option ExplicitPrivate Sub Form_Load()
        Call Subclassing.Subclassing(Text1.hWnd)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Call Subclassing.Subclassing(Text1.hWnd, True)
    End Sub模块代码: Option Explicit
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function GetProp Lib "user32" Alias "GetPropA" (ByVal hWnd As Long, ByVal lpString As String) As Long
    Public Declare Function SetProp Lib "user32" Alias "SetPropA" (ByVal hWnd As Long, ByVal lpString As String, ByVal hData As Long) As Long
    Public Declare Function RemoveProp Lib "user32" Alias "RemovePropA" (ByVal hWnd As Long, ByVal lpString As String) As Long
    Public Const GWL_WNDPROC = (-4&)Public Const WM_PASTE = &H302'子类处理辅助函数
    Public Function WinPropBag_ProcAddress(ByVal hWnd As Long, ByVal fStoreValue As Boolean, Optional ByVal lProcAddress As Long = 0, Optional ByVal fRemoveProp As Boolean = False) As Long
        If fStoreValue Then
            '保存属性
            SetProp hWnd, "MY_WINPROP_PROCADDRESS", lProcAddress
        Else
            '取出属性
            WinPropBag_ProcAddress = GetProp(hWnd, "MY_WINPROP_PROCADDRESS")
            If fRemoveProp Then
                '删除属性
                RemoveProp hWnd, "MY_WINPROP_PROCADDRESS"
            End If
        End If
        
    End FunctionPublic Sub Subclassing(ByVal hWndTarget As Long, Optional ByVal fUnsubclassing As Boolean = False)
        If fUnsubclassing Then
            SetWindowLong hWndTarget, GWL_WNDPROC, WinPropBag_ProcAddress(hWnd:=hWndTarget, fStoreValue:=False, fRemoveProp:=True)
        Else
            WinPropBag_ProcAddress hWndTarget, True, SetWindowLong(hWndTarget, GWL_WNDPROC, AddressOf MyWindowProc)
        End If
    End SubPublic Function MyWindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If uMsg = WM_PASTE Then
            Dim s As String
            s = Clipboard.GetText
            Form1.Text1.Text = Split(s)(0)
            Form1.Text2.Text = Split(s)(1)
            MyWindowProc = 1
        Else
            MyWindowProc = CallWindowProc(WinPropBag_ProcAddress(hWnd, False), hWnd, uMsg, wParam, lParam)
        End If
    End Function
      

  2.   

    Dim aa$, s
    Private Sub Form_Load()
       Open "c:\tt.txt" For Input As #1
       aa = StrConv(InputB(LOF(1), 1), vbUnicode)
       Close #1
       s = Split(aa, vbNewLine)
       'Text1.Text = s(0):Text2.Text = s(1) '呵呵直接赋值就好啦,下面是粘贴
       Clipboard.SetText s(0)
       Text1.Text = Clipboard.GetText
       Clipboard.SetText s(1)
       Text2.Text = Clipboard.GetText
    End Sub