以下一段vb程序,请问用dp怎么实现?请给出详细代码和注释。谢谢!
Option Explicit
Private Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
Public Function gettext(ByVal hh As Long) As String
Dim l As Long
   l = SendMessage(hh, &HE, 0, 0)
   If l > 0 Then
      ReDim b1(l + 1) As Byte, b2(l - 1) As Byte
      RtlMoveMemory b1(0), l, 2
      SendMessage hh, &HD, l + 1, b1(0)
      RtlMoveMemory b2(0), b1(0), l
      gettext = StrConv(b2, vbUnicode)
   Else
      gettext = ""
   End If
   
End Function

解决方案 »

  1.   

    function gettext(hh:longint):string;
    var
      l:longint;
      b1,b2:pchar;
    begin
      l:= sendmessage(hh,$E,0,0);
       If l > 0 Then
       begin
          getmem(b1,l+1);getmem(b2,l-1);
          b1[0]:=#1;
          b1[1]:=#1;
          SendMessage(hh, $D, l + 1,integer(b1));
          copymemory(b2,b1,l);
          gettext := b2
          end
       else
          gettext :='';end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      edit1.Text := gettext(Button1.Handle);
    end;
      

  2.   

    忘了free了
    tion gettext(hh:longint):string;
    var
      l:longint;
      b1,b2:pchar;
    begin
      l:= sendmessage(hh,$E,0,0);
       If l > 0 Then
       begin
          getmem(b1,l+1);getmem(b2,l-1);
          b1[0]:=#1;
          b1[1]:=#1;
          SendMessage(hh, $D, l + 1,integer(b1));
          copymemory(b2,b1,l);
          gettext := b2;
          freemem(b1);
          freemem(b2);  
           
         
          end
       else
          gettext :='';end;