如何防止CFrameWnd被鼠标移动

问题描述:

我有一个应用程序显示在主窗口顶部显示的CFrameWnd。当用户为窗口选择特定模式时,我需要该窗口不可移动且不可调整大小。
我的CFrameWnd与风格WS_OVERLAPPEDWINDOW | WS_THICKFRAME | WS_POPUP如何防止CFrameWnd被鼠标移动

我所遇到使用CWndOnNcHitTest的超负荷的解决方案改写
HTLEFT,HTRIGHT,HTTOP,HTTOPLEFT,HTTOPRIGHT,HTBOTTOM,HTBOTTOMLEFT,HTBOTTOMRIGHT,HTSIZE,HTCAPTIONHTBORDER防止识别区负责大小/移动框架创建。
这种方法适用于我的情况调整大小,但移动窗口仍然是可能的,虽然hittest覆盖工作正常(痕迹验证)。

我的方法有什么问题吗?或者有什么可能会干扰这个解决方案,如果有的话,你有什么建议去看看?

你应该可以使OnNcHitTest()工作,不要返回HTCAPTION。

尽管如此,移动/调整窗口的方式有多种,您还必须担心系统菜单(键入Alt + Space)。为WM_MOVING和WM_SIZING编写消息处理程序,并覆盖RECT,以便窗口保持放置状态。

+0

谢谢!添加OnMoving的覆盖并将目标Rect设置为当前窗口的技巧。我之前找到的guid没有提到WM_MOVING消息。 – lowglider 2012-07-31 13:43:02