我有自己的窗口自定义绘制标题栏。我还在这个栏上画了一个位图,我想知道当有人用鼠标光标悬停在它上面时。我已经处理了该WM_NCMOUSEMOVE消息,但这似乎只在边界上触发,而不是我的标题区域本身。
如何检测鼠标何时位于标题栏的特定区域上?
这是使用 Visual C++ 2010。
更新:
我已经在一定程度上解决了这个问题。我(故意)没有WS_CAPTION在窗口上设置样式,而是处理WM_NCCALCSIZE并手动调整非客户区域的大小 - 在本例中将其向下移动 20 像素。这意味着我“强制”作为非客户区的区域不会收到WM_NCMOUSEMOVE消息,但也不会收到WM_MOUSEMOVE消息。一种解决方法是强制使用样式WM_CAPTION,去掉我的自定义代码,WM_NCCALCSIZE但这并不理想。有办法解决吗?
更新2:
消息也是同样的问题WM_NCHITTEST。WS_CAPTION除非我设置了我不想要的样式,否则该区域不会触发这些。此外,它还会以某种方式影响客户区域,因为它不再接收WM_LBUTTONDOWN消息。
我有一个非常简单的示例图,我试图对其进行深度优先查询。假设图的边看起来像这样
A->B
A->C
B->D
B->E
C->F
C->G
Run Code Online (Sandbox Code Playgroud)
从 A 开始的深度优先搜索应该返回
A-B-D-E-C-F-G
Run Code Online (Sandbox Code Playgroud)
但如果我能得到下面的订单那就更好了
D-E-B-A-F-G-C-A
Run Code Online (Sandbox Code Playgroud)
如何创建将输出此订单的 Gremlin 查询?如果我做这样的事情
g.V('A').repeat(outE().inV()).emit()
Run Code Online (Sandbox Code Playgroud)
我得到的顺序是 A、B、C、D、E、F、G,即广度优先。我不知道如何获得上面我想要的订单。