如何阻止Windows窗体中重写的WndProc函数中的双击? [英] How to block double click in overridden WndProc function in Windows Forms?
问题描述
我有一个在Windows窗体中创建的窗体,无论单击何处都可以将其拖动.我是通过重写WndProc函数来实现的,该函数依次修改每次单击,因为它是标题栏单击:
I have a form created in Windows Forms which is draggable wherever I click. I made it by overriding WndProc function which in turn modifies each click as it was a title bar click:
//found at: http://stackoverflow.com/questions/3995009/how-to-make-a-window-draggablec-winforms
private const int WM_NCHITTEST = 0x84;
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;
///
/// Handling the window messages
///
protected override void WndProc(ref Message message)
{
base.WndProc(ref message);
if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
message.Result = (IntPtr)HTCAPTION;
}
问题是,当我双击时,窗口变为全屏显示,这是不需要的.如何阻止这种行为?
The problem is that now when I double click, the window becomes fullscreen, which is unwanted. How can I block this behavior?
推荐答案
除了JaredPar,我建议不要以那样方式创建可拖动表单,而是分3个步骤处理
In addition to JaredPar I would suggest don not create draggable form in that way, but handle it in 3 steps
- 在表格上找到鼠标
- 捕获鼠标
- 识别鼠标向上事件
处理起来并不复杂,最好是imo,然后禁用该表单的双击.
It is not a complicated to handle, and it's better, imo, then disabling a double click on the form.
有关如何操作的完整示例,请查看
For complete example of how you can do that can have a look on
这篇关于如何阻止Windows窗体中重写的WndProc函数中的双击?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!