BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)  
ON_BN_CLICKED(IDC_BUTTON2, OnButton1)//共用函数OnButton1
END_MESSAGE_MAP()
void CTestDlg::OnButton1() 
{
MessageBox("Button1");
}

解决方案 »

  1.   

    因为在_AfxDispatchCmdMsg(this, nID, nCode,
    lpEntry->pfn, pExtra, lpEntry->nSig, pHandlerInfo);函数中还能看到nID,到回调OnButton1() 函数时就不能看到了。
      

  2.   

    是的,要这样用,以为VC和Delphi都可以实现,共用事件,但又可以区分谁调用的。
      

  3.   

    可以在函数里面用getfocus()来判断??
      

  4.   

    楼上:假设是直接用SendMessage来模拟点击,GetFocus是否还有效?
    楼主:为什么不变通一下:既然这么麻烦,索性用不同一ID来映射?毕竟写程序是一种工程实现活动,有些东西实在想不出来,也不一定要逼着自己去搞。
      

  5.   

    使用WM_COMMAND消息,然后再处理函数中用nID区分两个按钮
      

  6.   

    void CTestDlgDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    _AFX_THREAD_STATE* pThreadState = AfxGetThreadState();
    MessageBox(pThreadState->m_lastSentMsg.wParam==IDC_BUTTON1?"1":"2");
    }