发送自定义消息好说,可是接受消息怎样做呢,需要接受消息后触发某个函数
 有这方面的例子吗

解决方案 »

  1.   

    一种方式
    用timer检测,其实不是消息,是程序内部定义的变量吧,变量发生变化,触发某个函数
    二种方式
    用windows消息,好像支持的消息不对,都对应着event
      

  2.   

    块中的  
    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  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  SendMessage  Lib  "user32"  Alias  "SendMessageA"  (ByVal  hwnd  As  Long,  ByVal  wMsg  As  Long,  ByVal  wParam  As  Long,  lParam  As  Any)  As  Long  
    Public  Const  WM_USER  =  &H400  
    Public  Const  GWL_WNDPROC  =  (-4)  
    Private  OldWndProc  As  Long  
    Public  Const  WM_MYMESSAGE  =  WM_USER  +  1              '自定义的消息一定要比WM_USER大,不然就会和Windows原有的消息重复的  
    Public  Function  WindowProc(ByVal  hwnd  As  Long,  ByVal  Msg  As  Long,  ByVal  wParam  As  Long,  ByVal  lParam  As  Long)  As  Long  
           If  Msg  =  WM_MYMESSAGE  Then  
                   Debug.Print  "自定义消息!"  
                   Exit  Function  
           End  If  
           WindowProc  =  CallWindowProc(OldWndProc,  hwnd,  Msg,  wParam,  lParam)  
    End  Function  
     
    Public  Sub  HookWindow(hwnd  As  Long)  
           OldWndProc  =  SetWindowLong(hwnd,  GWL_WNDPROC,  AddressOf  WindowProc)  
    End  Sub  
     
    Public  Sub  UnHook(hwnd  As  Long)  
           SetWindowLong  hwnd,  GWL_WNDPROC,  OldWndProc  
    End  Sub  
     
    '窗体的  
    Private  Sub  Command1_Click()  
           SendMessage  Me.hwnd,  WM_MYMESSAGE,  ByVal  0&,  ByVal  0&  
    End  Sub  
     
    Private  Sub  Form_Load()  
           HookWindow  Me.hwnd  
    End  Sub  
     
    Private  Sub  Form_Unload(Cancel  As  Integer)  
           UnHook  Me.hwnd  
    End  Sub  
      

  3.   

    用定时器比较简单,也可以用API
    SetTimer
    KillTimer