请问VB的事件触发,消息循环,消息处理结构是怎样的?与WINDOWS SDK的事件触发,消息循环,消息处理结构的对应关系又是怎样的?
   如果对于某一控件的事件,我们自己没有编写它的处理过程,则请问这个事件还触发消息到消息循环中吗?如果触发了消息,那么系统通过调用什么过程来处理它?在SDK中,是DefWindowProc来处理的

解决方案 »

  1.   

    VB是基于事件处理的,好象所有的消息VB都转换为了对应的事件!
      

  2.   

    可以看看MSDN中有关“事件”和“回调”的内容,前者就不必解释了,后者在MSDN中有一些例子,一般需要用到API中的SetWindowLong和CallWindowProc这两个函数。
      

  3.   

    VB是基于事件处理的,好象所有的消息VB都转换为了对应的事件!
    ==============================
    好像不是所有,vb只转换了部分常用的消息,其他大部分的都没有做转换。。所以我们才要用子类去尝试捕捉那些vb没有做转换的消息
      

  4.   

    '先聲明那些常量,然後在自定議的消息處理函數中採用' 窗體中
    lpprevwndproc =getwindowlong(hwnd,gwl_wndproc) 'hwnd爲需要處理的窗體或控件的句柄
    setwindowlong hwnd,gwl_wndproc,addressof wndproc ' hwnd 同上' 模塊中
    public lpPrevWndProc as longpublic function WndProc(byval hWnd as long,byval uMsg as long,byval wParam as long,byval lParam as long) as long 
       select case umsg
           case '這裏寫需要處理的消息常量。
           case else
              wndproc=callwindowproc(lpPrevWndProc,hwnd,umsg,wparam,lparam)
      end select
    end function
      

  5.   

    //   如果对于某一控件的事件,我们自己没有编写它的处理过程,则请问这个事件还触发消息到消息循环中吗?如果触发了消息,那么系统通过调用什么过程来处理它?在SDK中,是DefWindowProc来处理的你如果不觸發它的話它會用默認的消息處理函數處理
    wndproc=callwindowproc(lpPrevWndProc,hwnd,umsg,wparam,lparam)