Csharp/C#教程:在窗口标题中更改光标分享


在窗口标题中更改光标

我有一个WinForm,现在我需要在窗口标题部分更改光标。 我有一些代码工作,它有两个问题:

  1. 它还会在边缘处更改光标(应显示正常的resize光标)。 我发现我需要这样的WM_NCHITTESTHTTOP ,但我该如何组合呢?
  2. 移动鼠标时有一些闪烁。

我也尝试将代码放在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

(0)
上一篇 2021年12月22日
下一篇 2021年12月22日

精彩推荐