父窗口弹出了小的模式对话框后,需要在模式对话框中响应鼠标在非对话框窗口的单击事件

解决方案 »

  1.   

    由于模式对话框处于进程所有窗口的最上层,当模式对话框出来时,如果鼠标点击到该进程其他窗口的区域,需要模式对话框关闭,相当于OnOK。
      

  2.   

    全局捕获鼠标事件,当发生单击事件时,判断当前鼠标点下的窗体是不是你的非对话框窗口
    取鼠标点下的窗口句柄:POINT pt;
    GetCursorPos(&pt);
    HWND hCur=::WindowFromPoint(pt);
      

  3.   

    可以的,为这个非模式对话框增加Onmousemove,onlbuttondown:
    SetCapture然后releasecapture.
      

  4.   

    SetCapture了,鼠标只能在模式对话框内,我要的是获得鼠标在其他窗口点击
      

  5.   

    试试 SendMessage(GetParent()->m_hWnd,.......)
      

  6.   

    你看看下面的代码能满足你的要求吗?#include "Dlg1.h"
    BOOL CDlg1::OnInitDialog() 
    {
        CDialog::OnInitDialog();
        AfxGetMainWnd()->EnableWindow();
        return TRUE;
    }
    CDlg1 dlg;
    void CMainFrame::OnTest() 
    {
        dlg.DoModal();    
    }BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
    {
        if (pMsg->message == WM_LBUTTONDOWN)
        {
            if (::IsWindow(dlg.m_hWnd))
                dlg.SendMessage(WM_COMMAND, IDOK);
            return TRUE;
        }
        return CFrameWnd::PreTranslateMessage(pMsg);
    }你的用法很特别,也稍微有一点不自然。不符合窗口习惯,你再考虑考虑。