日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#不规则窗体移动

發布時間:2025/3/14 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#不规则窗体移动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.重寫wndProc代碼:

protected override void WndProc(ref Message m)
{???????
??????? const int WM_NCHITTEST = 0x84;
??????? const int HTCLIENT = 0x01;
??????? const int HTCAPTION = 0x02;
???????? if (m.Msg == WM_NCHITTEST)
??????? {
??????????????? this.DefWndProc(ref m);
??????????????? if (m.Result.ToInt32() == HTCLIENT)
??????????????????? m.Result = new IntPtr(HTCAPTION);
??????????????? else
??????????????????? base.WndProc(ref m);
??????? }
??????? else
??????? {
??????????????? base.WndProc(ref m);
??????? }
}

2.創建消息
代碼:

private const int WM_NCLBUTTONDOWN = 0x00A1;
private const int WM_NCHITTEST = 0x84;
private const int HT_CAPTION = 0x2;
private const int HT_CLIENT = 0x1;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
??? //this.Capture = false;
??? pictureBox1.Capture = false;
??? Message msg = Message.Create(Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
??? WndProc(ref?? msg);???
}

3.調用API代碼:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
?public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
?? public const int WM_SYSCOMMAND = 0x0112;
?? public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;


?? //在窗體的_MouseDown中加入如下代碼:
如:
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}

轉載于:https://www.cnblogs.com/fornet/archive/2013/02/22/2976170.html

總結

以上是生活随笔為你收集整理的c#不规则窗体移动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。