在窗口标题中更改光标
我有一个WinForm,现在我需要在窗口标题部分更改光标。 我有一些代码工作,它有两个问题:
-
它还会在边缘处更改光标(应显示正常的resize光标)。我发现我需要这样的WM_NCHITTEST
和HTTOP
,但我该如何组合呢? - 移动鼠标时有一些闪烁。
我也尝试将代码放在base.WndProc(ref m);
。
这是我已有的代码:
if ((m.Msg == Win32.WM.NCMOUSEMOVE || m.Msg == Win32.WM.NCLBUTTONDOWN || m.Msg == Win32.WM.NCLBUTTONUP || m.Msg == Win32.WM.NCRBUTTONDOWN || m.Msg == Win32.WM.NCRBUTTONUP) ) { if (m.WParam.ToInt32() != Win32.HT.TOP && m.WParam.ToInt32() != Win32.HT.RIGHT && m.WParam.ToInt32() != Win32.HT.BOTTOM && m.WParam.ToInt32() != Win32.HT.LEFT) { Cursor = Cursors.Hand; } }
编辑:
我没有在Spy ++中正确记录消息。 找到窗口边缘的解决方案(请参阅更新的代码)。
Thnx,J
它闪烁是因为你使用了错误的信息。 任何鼠标移动后跟WM_SETCURSOR以允许应用程序更改光标。 因此光标变回默认值。 而是拦截WM_SETCURSOR。 LParam的低位字包含命中测试代码。
上述就是C#学习教程:在窗口标题中更改光标分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
protected override void WndProc(ref Message m) { if (m.Msg == 0x20) { // Trap WM_SETCUROR if ((m.LParam.ToInt32() & 0xffff) == 2) { // Trap HTCAPTION Cursor.Current = Cursors.Hand; m.Result = (IntPtr)1; // Processed return; } } base.WndProc(ref m); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987075.html