怎样判断鼠标是否离开窗口区域

EP 2012-09-24 08:37:12
rt;
PS:①要求能在 Luna 的 《DirectX 9.0c 3D游戏开发编程基础》 的源代码上运行,即 与MFC是有些不一样的:它缺少一些MFC的类库或者说是相关函数,它可以认为一个简单的手写的VC++窗口程序,希望帮助我的热心大神能注意到这点,以免浪费时间做无用功.
②如果能给出代码最好,如果能给出思路或相关系统函数,也可以,本人将在调试运行出结果后给分.


下面给出我实现的一个Directx摄像机实现代码,鼠标超出窗口的问题令我很困扰:
这是回调函数的部分:
case WM_LBUTTONDOWN:
{
::GetCursorPos(&OriginPT); //按下鼠标左键获取位置
ScreenToClient(m_hWnd , &OriginPT);
bLBtnDown = true;
}
break;

case WM_LBUTTONUP:
{
bLBtnDown = false; //松开左键就离开
}
break;

case WM_MOUSEMOVE:
{
if (OriginPT.x < 0 || OriginPT.y < 0 || OriginPT.x > scWidth || OriginPT.y > scHeight) //判断在不在窗口内,但是没有作用,估计是离开了窗口就不向这个程序发送消息了
{
bLBtnDown = false;
}
if (bLBtnDown)
{
::GetCursorPos(&DestinationPT);
ScreenToClient(m_hWnd , &DestinationPT);
MoveX = DestinationPT.x - OriginPT.x;
MoveY = DestinationPT.y - OriginPT.y;
TheCamera.pitch(MoveY * 0.01f); //摄像机的旋转,这个与问题没有多大关联
TheCamera.yaw(MoveX * 0.01f);
::GetCursorPos(&OriginPT);
ScreenToClient(m_hWnd , &OriginPT);
}
}
break;
...全文
391 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
EP 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
使用SetCapture捕获鼠标,就算鼠标离开了窗口也会发送消息给程序哦
[/Quote]
我试了下,发现可以用,谢谢
wozaibeijing123 2012-09-25
  • 打赏
  • 举报
回复
楼主 记得给分
wozaibeijing123 2012-09-25
  • 打赏
  • 举报
回复
不知道 可不可以给窗口window添加一个鼠标离开事件,楼主可以试试,我想应该可以的
WJN92 2012-09-25
  • 打赏
  • 举报
回复
使用SetCapture捕获鼠标,就算鼠标离开了窗口也会发送消息给程序哦
ciltr 2012-09-25
  • 打赏
  • 举报
回复
在离开窗口的那一次移动会发WM_MOUSEMOVE消息。
EP 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
不知道 可不可以给窗口window添加一个鼠标离开事件,楼主可以试试,我想应该可以的
[/Quote]

我就是不会啊,你要是会,可以告诉我相关代码或函数也行,有用我一定会给分的!!!
EP 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
在离开窗口的那一次移动会发WM_MOUSEMOVE消息。
[/Quote]

关键是无法判断,因为离开之前在窗体边缘,如果移动快了,鼠标就直接出去了,消息就没有发给窗体
第4章 Cookie篇.... 96 4.1 将资料写入Cookie. 96 4.2 读取Cookie的值... 97 4.3 记录浏览者的姓名... 98 4.4 显示浏览次数... 99 4.5 记录浏览网站的时间... 101 4.6 只显示一次的弹出式窗口... 102 4.7 记住登录账号和密码... 103 4.8 检测浏览器是否关闭了Cookie 功能... 105 第5章 视窗篇.... 106 5.1 警告对话框... 106 5.2 在警告对话框上显示多行消息 正文... 106 5.3 确认对话框... 107 5.4 输入对话框... 108 5.5 显示网页对话框... 109 5.6 以顶层模式显示网页对话框... 110 5.7 取得浏览器窗口大小(Netscape) 110 5.8 取得浏览器窗口大小(IE) 111 5.9 设定浏览器窗口大小(IE) 112 5.10 不能改变大小的窗口... 113 5.11 指定浏览器窗口的位置... 114 5.12 取得屏幕的大小... 114 5.13 提示浏览者更改分辨率... 115 5.14 使浏览器窗口显示于屏幕中央... 116 5.15 使浏览器窗口显示于屏幕左上角... 117 5.16 使浏览器窗口显示于屏幕右下角... 118 5.17 使浏览器窗口大小适合于屏幕 大小... 119 5.18 窗口的从天而降效果... 120 5.19 振动的窗口... 122 5.20 窗口缩小效果... 123 5.21 窗口的自动向下滚动... 124 5.22 窗口的自动向右滚动... 125 5.23 双击鼠标滚动窗口/单击鼠标停止 滚动... 126 5.24 去掉窗口滚动条... 127 5.25 让滚动条在窗口左边出现... 128 5.26 改变窗口滚动条的样式... 129 5.27 不能最小化的窗口... 130 5.28 改变在浏览器地址栏中显示的 图标... 131 5.29 弹出一个新窗口... 131 5.30 弹出一个无属性栏的窗口... 132 5.31 弹出广告窗口... 133 5.32 弹出多个窗口... 134 5.33 指定弹出窗口的位置(IE) 135 5.34 指定弹出窗口的位置(Netscape) 136 5.35 弹出一个居中显示的窗口... 137 5.36 弹出一个全屏幕窗口... 138 5.37 在弹出的窗口中显示菜单... 139 5.38 在弹出的窗口中显示标准按钮栏... 140 5.39 在弹出的窗口中显示地址栏... 141 5.40 在弹出的窗口中显示状态栏... 141 5.41 在弹出的窗口中显示滑块... 142 5.42 允许调整弹出窗口的大小... 143 5.43 弹出一个顶层窗口... 144 5.44 关闭窗口... 145 5.45 在主窗口上关闭弹出式窗口... 146 5.46 在弹出式窗口上关闭主窗口... 146 5.47 将主窗口中的资料输出到弹出式 窗口中... 147 5.48 将弹出式窗口的资料输入到 主窗口中... 149 5.49 弹出一个自动关闭的窗口... 150 第6章 文字篇.... 152 6.1 连接字符串... 152 6.2 比较两个字符串... 153 6.3 取得字符串的长度... 154 6.4 英文字母大小写转换... 155 6.5 取得字符串中指定位置的字符... 156 6.6 取得指定Unicode值所表示的 字符... 157 6.7 搜索字符串... 158 6.8 从右至左搜索字符串... 159 6.9 撷取部分字符串... 160 6.10 将字符串分割成单个字符... 161 6.11 使用指定的字符分割字符串... 162 6.12 发光特效文字... 163 6.13 阴影特效文字... 164 6.14 半透明文字... 165 6.15 水波文字... 166 6.16 鼠标移上去后改变文字的颜色... 167 6.17 鼠标移上去后改变文字的样式... 168 6.18 让浏览者自己选择网页文字的 大小... 168 6.19 让浏览者自己选择网页文字的 颜色... 169 6.20 动态缩放文字... 170 6.21

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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