程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 如何通過鼠標控制無標頭窗體

如何通過鼠標控制無標頭窗體

編輯:關於.NET

這個問題也是來自論壇提問,同樣是.Net WinForm新手的問題,這樣的問題如果在Deplphi這樣的板塊立刻就被秒殺了,可是.Net版知道的人好像不太多。

介紹兩個方法,一個是發送SC_Move消息,一個是改變鼠標區域消息

方法一:

1.using  System;
2.using System.Collections.Generic;
3.using System.ComponentModel;
4.using System.Data;
5.using System.Drawing;
6.using System.Text;
7.using System.Windows.Forms;
8.using System.Runtime.InteropServices;
9.namespace WindowsApplication1
10.{
11. public partial class Form1 : Form
12. {
13. public Form1()
14. {
15. InitializeComponent();
16. }
17. [DllImport( "user32.dll" , EntryPoint = "SendMessage" )]
18. public static extern int SendMessage( int hWnd, int wMsg, int wParam, int lParam);
19. [DllImport( "user32.dll" , EntryPoint = "ReleaseCapture" )]
20. public static extern int ReleaseCapture();
21. public const int WM_SysCommand = 0x0112;
22. public const int SC_MOVE = 0xF012;
23.
24.
25. private void Form1_MouseDown( object sender, MouseEventArgs e)
26. {
27. ReleaseCapture();
28. SendMessage( this .Handle.ToInt32(), WM_SysCommand, SC_MOVE, 0);
29. }
30.
31. private void Form1_Load( object sender, EventArgs e)
32. {
33.
34. }
35. }
36.}

方法二:

1.using  System;
2.using System.Windows.Forms;
3.namespace WindowsApplication1
4.{
5. public partial class Form1 : Form
6. {
7. public Form1()
8. {
9. InitializeComponent();
10. }
11.
12. protected override void WndProc( ref Message m)
13. {
14. base .WndProc( ref m); if (m.Msg == 0x84)
15. {
16. switch (m.Result.ToInt32())
17. {
18. case 1:
19.
20. m.Result = new IntPtr(2); break ;
21. }
22. }
23. }
24. }
25.}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved