定义两个CWnd的对象A,B。将其Create()出来,将A与B部分重叠,A在B上面,当点击A与B的重叠部分时,为何是B而不是A响应鼠标点击???
如何让A响应鼠标点击???

解决方案 »

  1.   

    确定.  就是对A用SetActiveWindow()也不行
      

  2.   

    试试只创建A,不创建B,看看A能不能接收点击。
      

  3.   

    谢了,everandforever(Forever) ,结贴时给分!!
      

  4.   

    pwnd->SetWindowPos(pwnd2 , 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE);
      

  5.   

    呵,masterz(MS MVP) 应该也是犯了个错误。至少昨晚我试的,的确是由TABORDER决定由哪个响应,而不是谁显示在前的问题。
    只能使用BringWindowToTop();其实我昨天替你回答的除了最初显示不对外(TABORDER在前的最初显示在下面)其它都对的。你可以试一下pwnd和pwnd2的OnSetFocus(..)时BringWindowToTop();看是否有效。
      

  6.   

    I have tested before posting, it worked as required by eEric
      

  7.   

    哦,那就弄不清是我理解错楼主的意思还是masterz(MS MVP) 理解错了。masterz(MS MVP) 的做法能使点击重叠部分时始终由B响应,我认为楼主还包含这个意思:当点击A的非重叠部分,A响应后,显示在前,此时点重叠部分时应由A响应了,而不再是B。
    再点B的非重叠部分,B响应后,显示在前,此时点重叠部分时应由B响应了,而不再是A。因此,必须有类似下面的代码,不知我理解的是否正确??void CYourDlg::OnButton1() 
    {
    GetDlgItem(IDC_BUTTON1)->BringWindowToTop();

    }void CYourDlg::OnButton2() 
    {
    GetDlgItem(IDC_BUTTON2)->BringWindowToTop();}对于派生的CWnd应该可以在得到焦点或LBUTTONDOWN时BringWindowToTop();