BOOL CMyhookDlg::PreTranslateMessage( MSG* pMsg )
{::SendMessage(GetDlgItem(IDC_BUTTON1)->m_hWnd,WM_LBUTTONDOWN,0,0);
return false;

}
上面能够看到button被按下的效果,而下面这个并没有执行我已经做的好的OnButton事件函数BOOL CMyhookDlg::PreTranslateMessage( MSG* pMsg )
{::SendMessage(GetDlgItem(IDC_BUTTON1)->m_hWnd,BN_CLICKED,0,0);
return false;

}

解决方案 »

  1.   

    WM_LBUTTONDOWN是鼠标按下的Windows系统消息,BN_CLICKED是当Button按下时通过WM_COMMAND传递给其父窗口的,两者的消息传递路径不同,我也是新手,不知道是不是这样的
      

  2.   

    BN_CLICKED不是消息,只是消息参数(wParam, lParam)
    ON_BN_CLICKED(id, memberFxn) ->
    ON_CONTROL(BN_CLICKED, id, memberFxn) ->
    { WM_COMMAND, BN_CLICKED, (WORD)id, (WORD)id, AfxSig_vv, (AFX_PMSG)&memberFxn }改成SendMessage(WM_COMMAND, MAKEWPARAM(IDC_BUTTON1,BN_CLICKED), 0);