我试图允许用户移动/调整CEF无边界窗口(使用WS_POPUP标志创建)。
鼠标位置在CEF浏览器中捕获(使用Javascript)并调用C ++回调。然后,我通过IPC从C ++回调向CEF浏览器进程发送消息(例如,该消息可以包含HTRIGHT)。 最后一步是移动或调整浏览器的大小。 我想生成WM_NCHITTEST消息,以便允许窗口移动/调整大小。
我试着这样做:
PostMessage(getBrowserHwnd(), WM_NCHITTEST, 0, MAKELPARAM(cursorPos.x, cursorPos.y));
但当然,它不起作用。
所以我的问题是:有没有办法生成WM_NCHITTEST消息? CEF不允许我访问窗口的客户区域,因此我的窗口过程不会收到任何鼠标事件。
非常感谢任何帮助。
winapiwrapper
答案 0 :(得分:1)
您正在生成WM_NCHITTEST
,但点击测试无法启动任何操作,因为hit-testing can happen for reasons other than the mouse being over your window。
我认为开始移动/大小操作的文档化方法是使用WM_SYSCOMMAND
,但我猜测这不是你所追求的,因为这与系统菜单中的操作相同你必须在移动/选择尺寸之前选择侧面。
如果您可以处理消息,那么您可以返回HTCLIENT
以回复WM_NCHITTEST
,或者作为黑客可以执行此操作:
PostMessage(getBrowserHwnd(), WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(cursorPos.x, cursorPos.y)); // cursorPos should be screen coordinates