【发布时间】:2016-02-20 11:19:50
【问题描述】:
正如标题所说,我只想在用户从客户区的一部分拖动窗口时才移动窗口。这将是对正常标题栏运动的模仿,这是因为我的表单是自定义的,并且没有任何标题或标题栏。目前,我使用的代码如下:
...
case WM_NCHITTEST:
return HTCAPTION;
这对于让用户无论从哪里拖动都能够移动窗口非常有效。我想限制这种可能性(只有窗口顶部允许移动)。我没有尝试检查鼠标按下的位置,因为我不知道如何在WM_NCHITTEST 消息中进行检查。
我在 Visual Studio 2015 中使用纯 Win32 (winapi) C 代码(目前没有 MFC 或其他任何东西)。
【问题讨论】:
-
没有称为 C/C++ 的语言。请告诉我们您正在编程的两个中的哪一个并删除另一个标签。
-
如果消息没有提供光标位置,请使用 GetMessagePos() 获取。
-
@FUZxxl 表示 C 或 C++。 OP 正在寻找答案,因为 WinAPI 和 VS2015 都支持。两个标签都是合适的。
-
@2501 正如其他地方所讨论的那样,这种问题是不鼓励的,因为“C/C++”通常实际上意味着“实际上我需要 C++,但如果有 C 的答案,我可能会把它改造成有用的东西。”询问您的需求,而不是产生尽可能广泛的受众。
-
指定正确的语言很重要。例如,我查看了标签以了解要使用哪种类型的演员表。不知道。我掷骰子选择了 C++。之所以这么简单,是因为问题完全是关于 Win32,它是一个 C API,因此两种语言的代码看起来非常相似。将来,请务必选择一种语言并坚持下去。不得不重复这个评论讨论 ad nauseum 变老了。
标签: c user-interface winapi custom-controls