要响应mfc中的非客户区事件一般重载OnNC方法,比如说OnNCLBUTTONDOWN(),OnNCLButtonUP()。但是重载时,却发现OnNCLButtonUP()要双击才会被触发,单击根本不会有反应。这是什么原因呢?在百度上一搜很多人说要做钩子。但我想为了一个OnNCLButtonUP()去做一个钩子,是不是太复杂啊。应该有更为简单的办法吧。于是就想是不是在触发OnNCLButtonUP()之前鼠标被别的事件捕获了,并且做了处理呢?而OnNCLBUTTONDOWN又能正常响应。那么这个事件应该介于OnNCLBUTTONDOWN()和OnNCLButtonUP()之间。难道是OnNCMouseMove()?那就重载OnNCMouseMove试一下。果然重载之后OnNCLButtonUP()就能正常响应了。但有一点要特别注意就是在重载的OnNCMouseMove中不能调CDialog的OnNCMouseMove方法。否则OnNCLButtonUP()还是要双击才能响应。我想大概是在CDialog的OnNCMouseMove方法中做了些对鼠标消息的处理吧。
mfc关于非客户区的鼠标事件
最新推荐文章于 2023-08-31 18:20:21 发布