gpt4 book ai didi

c++ - 生成 WM_NCHITTEST 消息

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:38 25 4
gpt4 key购买 nike

我正在尝试允许用户移动/调整 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 不允许我访问窗口的客户区,因此我的窗口过程没有收到任何鼠标事件。

如有任何帮助,我们将不胜感激。

winapi包装器

最佳答案

您正在生成一个 WM_NCHITTEST 但 HitTest 不会启动任何操作,因为 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

关于c++ - 生成 WM_NCHITTEST 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49019597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com