如何在模式对话框中,响应鼠标在非对话框窗口的单击

liweiwei0808 2009-07-10 11:06:01
父窗口弹出了小的模式对话框后,需要在模式对话框中响应鼠标在非对话框窗口的单击事件
...全文
74 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liweiwei0808 2009-07-10
  • 打赏
  • 举报
回复
SetCapture了,鼠标只能在模式对话框内,我要的是获得鼠标在其他窗口点击
路人乙2019 2009-07-10
  • 打赏
  • 举报
回复
可以的,为这个非模式对话框增加Onmousemove,onlbuttondown:
SetCapture然后releasecapture.
liweiwei0808 2009-07-10
  • 打赏
  • 举报
回复
点击非对话框窗口时,对话框响应不了单击事件啊
cutestar 2009-07-10
  • 打赏
  • 举报
回复
全局捕获鼠标事件,当发生单击事件时,判断当前鼠标点下的窗体是不是你的非对话框窗口
取鼠标点下的窗口句柄:

POINT pt;
GetCursorPos(&pt);
HWND hCur=::WindowFromPoint(pt);
liweiwei0808 2009-07-10
  • 打赏
  • 举报
回复
由于模式对话框处于进程所有窗口的最上层,当模式对话框出来时,如果鼠标点击到该进程其他窗口的区域,需要模式对话框关闭,相当于OnOK。
dayong576 2009-07-10
  • 打赏
  • 举报
回复
重新描述一下问题,晕ing
快乐鹦鹉 2009-07-10
  • 打赏
  • 举报
回复
???晕的很,说啥呢?模式对话框显示出来后,哪还能响应其它窗口的点击事件啊
softist 2009-07-10
  • 打赏
  • 举报
回复
你看看下面的代码能满足你的要求吗?

#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);
}

你的用法很特别,也稍微有一点不自然。不符合窗口习惯,你再考虑考虑。

shuhaoc 2009-07-10
  • 打赏
  • 举报
回复
试试 SendMessage(GetParent()->m_hWnd,.......)

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧