我要知道一个窗口上的按钮什么时候被点击了,并在那个按钮被点击时做一些处理,我知道用HOOK技术可以做到,不过我对HOOK不熟,所以希望高手给点代码做参考

解决方案 »

  1.   

    SetWindowsHook()  钩住WH_MSGFILTER,这样可以监视所有的消息,具体可以看MSDN
    下面的代码就是钩住所有键盘消息的例子/*void CVideoWindow::OnFullScreen()
    {
    if (m_pIVideoWnd) 
    {
    if (!m_hKeyHook) 
    m_hKeyHook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KbdHookProc, AfxGetInstanceHandle(), NULL);
    if (!m_hMouseHook) 
    m_hMouseHook = ::SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseHookProc, AfxGetInstanceHandle(), NULL); m_pIVideoWnd->put_FullScreenMode(OATRUE);
    g_pView = m_pIVideoWnd;
    }LRESULT KbdHookProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    if (((DWORD)lParam & 0x40000000) && (nCode == HC_ACTION))
    {
    switch (wParam)
    {
    case VK_ESCAPE:
    OnFullscreenOff();
    return true;
    }
    } return ::CallNextHookEx(m_hKeyHook, nCode, wParam, lParam);
    }
      

  2.   

    [email protected]
    有兴趣看看
      

  3.   

    用消息钩子钩按钮窗口的WM_LBUTTONDOWN