- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的对话框派生自 CDialog,我想在用户将鼠标光标移开时关闭它。为此,我添加了调用 OnCancel() 的 OnMouseLeave 处理程序。据我了解,要及时发送 WM_MOUSELEAVE 事件,必须在 OnMouseMove 例程中调用 TrackMouseEvent。所以整个代码如下:
void CDlgMain::OnMouseLeave()
{
CDialog::OnMouseLeave();
// Close dialog when cursor is going out of it
OnCancel();
}
void CDlgMain::OnMouseMove(UINT nFlags, CPoint point)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE;
tme.dwHoverTime = HOVER_DEFAULT;
TrackMouseEvent(&tme);
CDialog::OnMouseMove(nFlags, point);
}
它工作正常,但是当用户将鼠标悬停在它的一些子控件上时对话框关闭(比如他想点击的按钮 :))。这是因为子控件不会向父对话框发送 WM_MOUSEMOVE。
我发现从子控件“传播”WM_MOUSEMOVE 消息的唯一函数是 SetCapture()。它完成了工作,但是 1) 之后用户不能单击任何按钮,并且 2) 鼠标图标变为沙漏。所以这不是一个选择。
有什么建议吗?
更新 我将 TrackMouseEvent 调用置于 PreTranslateMessage 例程中,该例程在任何鼠标移动事件(甚至悬停子控件)上都能正确调用。奇怪的是当用户悬停子控件时 WM_MOUSELEAVE 仍然生成!似乎 TrackMouseEvent 知道现在悬停的是什么控件。有什么解决办法吗?
最佳答案
如果这是模态对话框,我会尝试 CDialog::PreTranslateMessage()
。如果您仍然无法检测到子项内的鼠标移动,剩下的唯一选择是 SetWindowsHookEx
+ WH_MOUSE
。
关于c++ - 从 MFC CDialog 上的子控件接收 WM_MOUSEMOVE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115390/
我想使用 SetCursorPos 将鼠标困在窗口中间(就像在 FPS 游戏中一样) . 问题是,当我这样做时,我的窗口会收到一个 WM_MOUSEMOVE ——这最多会抵消用户想要的任何移动,最坏的
我正在开发一个程序,该程序应该在程序停留在后台时模拟程序的基本鼠标输入(这意味着,我想在目标接收输入时使用实际的鼠标和键盘在其他窗口中执行其他操作) 。我需要做的一件事是将鼠标移动到特定的 (x,y)
我正在尝试用 C++ 和 WinAPI 制作一个透明的屏幕保护程序。 到目前为止它在 Windows XP 上运行良好,但在 WES7 上我遇到以下问题:通过使我的屏幕透明,我无法接收任何 WM_MO
我有以下WndProc: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM w, LPARAM l) { switch (mes
当我的 C# WinForms 应用程序正在运行时,我需要检测鼠标指针何时移到第 3 方应用程序上。 我已经进行了一些 Google 搜索,但我似乎无法找到一个有用的代码示例来说明如何使用 C# 为另
现在我正在做一个项目,它要求我始终获取鼠标移动消息。我的应用程序只有一个用于配置目的的小窗口,大部分时间它甚至不会出现在桌面上。我需要的是我需要能够记录鼠标在桌面上的移动。这意味着人们在桌面上移动鼠标
我正在尝试实现一个功能,用户按下鼠标左键,将鼠标拖到某处,然后绘制一个“带边框的矩形”(没有任何填充的矩形显示下面的内容,所以基本上只是一个边框) . 我有东西使用这段代码: cas
你好, 绘制鼠标移动的最佳做法是什么?当在 WM_MOUSEMOVE 中执行绘图时,我看到很多示例(也在 MSDN 上)。但我认为更好的方法是在 WM_PAINT 中绘制。 例子: 版本 1 case
当将 WM_MOUSEMOVE 消息发送到应用程序(在本例中为 Open Office Writer)的客户区时,图像会闪烁,就好像鼠标位于指定坐标上一样,但不会停留在该状态。代码是: PostMes
我有一个(父)窗口,其中一个子窗口是由另一个库(Ogre3d)创建的。窗口初始化使用裸 Win32 API。 我想在我的父窗口中捕获鼠标输入,但似乎我的 WM_MOUSEMOVE 事件仅由子窗口接收,
我正在处理 Win32 控件。此控件上可能有数百个“项目”。这些不是窗口,而是内部对象(例如:矩形)。根据鼠标位置,我想更改鼠标光标。没关系,我可以使用 WM_SETCURSOR。 同时基于鼠标移动,
我正在试验 WM_TOUCH 并想检测鼠标事件是从触摸/笔事件合成还是由于实际鼠标事件。 官方根据MSDN解决是检查 GetMessageExtraInfo() 的结果是否将高 24 位设置为 0xF
我正在试验 WM_TOUCH 并想检测鼠标事件是从触摸/笔事件合成还是由于实际鼠标事件。 官方根据MSDN解决是检查 GetMessageExtraInfo() 的结果是否将高 24 位设置为 0xF
我的对话框派生自 CDialog,我想在用户将鼠标光标移开时关闭它。为此,我添加了调用 OnCancel() 的 OnMouseLeave 处理程序。据我了解,要及时发送 WM_MOUSELEAVE
大家好,我正在尝试实现 FPS=Style 相机。鼠标移动有效,但甚至没有接触鼠标。在我什至没有触碰鼠标的情况下,相机在各个角度都在运转。基本上,偏航和俯仰是在没有鼠标本身移动的情况下从鼠标获得错误的
我正在使用一个粗糙的系统通过将 WM_MOUSEMOVE 事件直接发送到 Flash 窗口来从 C++/win32 程序控制 Flash 电影。 它适用于一个轴: SendMessage( m_tar
我在这里看了很多关于 PeekMessage 和 WM_MOUSEMOVE 的帖子,但到目前为止我还没有发现任何与性能相关的内容。 长话短说;我正在做 PC 游戏开发,昨天我注意到我可以将我们的应用程
我是一名优秀的程序员,十分优秀!