vb中传消息是调用sendmessage API函数,在vb中sprintf的用法就比较多了,有时候选择你要操作的控件,会有很多的属性如果是变量或文件使用,那会有不同的使用方法,比较灵活

解决方案 »

  1.   

    Format函数可以代替一点,但不是全部
    Example:     MsgBox Format(Date, """Today is"" YYYY-MM-DD")2. 使用API函数SendMessage
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
      

  2.   

    说明:
    =====================================
    【函数】
    SendMessage【操作系统】
    Win9X:Yes
    WinNT:Yes【声明】
    SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long【说明】  调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, 
      SendMessageByString是该函数的“类型安全”声明形式 【返回值】  Long,由具体的消息决定 【其它】
    【参数表】
      hwnd -----------  Long,要接收消息的那个窗口的句柄  wMsg -----------  Long,消息的标识符  wParam ---------  Long,具体取决于消息  lParam ---------  Any,具体取决于消息例子:
    ==================================
    'This project needs a ListBox, named List1 and a TextBox, named Text1
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
    Const LB_FINDSTRING = &H18F
    Private Sub Form_Load()
        'Add some items to the listbox
        With List1
            .AddItem "Computer"
            .AddItem "Screen"
            .AddItem "Modem"
            .AddItem "Printer"
            .AddItem "Scanner"
            .AddItem "Sound Blaster"
            .AddItem "Keyboard"
            .AddItem "CD-Rom"
            .AddItem "Mouse"
        End With
    End Sub
    Private Sub Text1_Change()
        'Retrieve the item's listindex
        List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
    End Sub
      

  3.   

    SendMessage函数的功能是“发送消息”,即将一条消息发送到指定对象(操作系统、窗口或控件等)上,以产生特定的动作(如滚屏、修改对象外观等)。
    SendMessage函数在VB中的函数说明如下:
         Declare Function SendMessage Lib "user32" Alias "SendMessageA" (Byval hwnd As Long, Byval wMsg As Long,Byval wParam As Long,lParam As Any) As Long
          其中四个自变量的含义和说明如下:
    hWnd:对象的句柄。希望将消息传送给哪个对象,就把该对象的句柄作为实参传送,在VB中可以简单地用“对象.hWnd”获得某个对象的句柄,如Text1.hWnd和Form1.hWnd分别可以得到Text1和Form1的句柄。wMsg:被发送的消息。根据具体需求和不同的对象,将不同的消息作为实参传送,以产生预期的动作。wParam、lParam:附加的消息信息。这两个是可选的参数,用来提供关于wMsg消息更多的信息,不同的wMsg可能使用这两个参数中的0、1或2个,如果不需要哪个附加参数,则将实参赋为NULL(在VB中赋为0)。代码例子:
    Const CB_SHOWDROPDOWN=&H14F
       当程序中某处需要拉下组合框Combol的列表时,写如下调用语句:
    SendMessage Combol.hwnd,CB_SHOWDROPDOWN,True,0
       当需要收起组合框Combol的列表时,写如下语句:
    SendMessage Combol.hwnd,CB_SHOWDROPDOWNN,False,0