WinForm完成攔阻窗體上各個部位的點擊殊效實例。本站提示廣大學習愛好者:(WinForm完成攔阻窗體上各個部位的點擊殊效實例)文章只能為提供參考,不一定能成為您想要的結果。以下是WinForm完成攔阻窗體上各個部位的點擊殊效實例正文
本文實例講述了WinForm完成攔阻窗體上各個部位的點擊殊效,是一個異常適用的技能。分享給年夜家供年夜家參考。詳細剖析以下:
普通來講,windows窗體的題目欄沒法直接經由過程一些默許的事宜來掌握,須要懂得和WM_NCHITTEST相干的windows新聞。
以下示例演示了最簡略的後果片段:他會把客戶區和題目欄的後果交換,好比沒法按住題目欄拖動窗體而是改成了按住客戶區拖動,並禁用了封閉按鈕。 個中m.Result從-2到21都有界說,分離對應了全部窗體的各個部位,好比1代表客戶區,8代表最小化按鈕等等。
詳細功效代碼以下:
using System; using System.Windows.Forms; namespace WindowsApplication42 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Text = "雙擊左上角圖標封閉窗體"; } //攔擊題目欄鼠標地位事宜 const int WM_NCHITTEST = 0x84; protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == WM_NCHITTEST) { switch (m.Result.ToInt32()) { case 1://客戶區 m.Result = new IntPtr(2); break; case 2://題目欄 m.Result = new IntPtr(1); break; case 20: m.Result = new IntPtr(0); break; default: Console.WriteLine(m); break; } } } } }
上面是各個常量的意義:從Delphi7 VCL中摘取:
{ WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes } {$EXTERNALSYM HTERROR} HTERROR = -2; {$EXTERNALSYM HTTRANSPARENT} HTTRANSPARENT = -1; {$EXTERNALSYM HTNOWHERE} HTNOWHERE = 0; {$EXTERNALSYM HTCLIENT} HTCLIENT = 1; {$EXTERNALSYM HTCAPTION} HTCAPTION = 2; {$EXTERNALSYM HTSYSMENU} HTSYSMENU = 3; {$EXTERNALSYM HTGROWBOX} HTGROWBOX = 4; {$EXTERNALSYM HTSIZE} HTSIZE = HTGROWBOX; {$EXTERNALSYM HTMENU} HTMENU = 5; {$EXTERNALSYM HTHSCROLL} HTHSCROLL = 6; {$EXTERNALSYM HTVSCROLL} HTVSCROLL = 7; {$EXTERNALSYM HTMINBUTTON} HTMINBUTTON = 8; {$EXTERNALSYM HTMAXBUTTON} HTMAXBUTTON = 9; {$EXTERNALSYM HTLEFT} HTLEFT = 10; {$EXTERNALSYM HTRIGHT} HTRIGHT = 11; {$EXTERNALSYM HTTOP} HTTOP = 12; {$EXTERNALSYM HTTOPLEFT} HTTOPLEFT = 13; {$EXTERNALSYM HTTOPRIGHT} HTTOPRIGHT = 14; {$EXTERNALSYM HTBOTTOM} HTBOTTOM = 15; {$EXTERNALSYM HTBOTTOMLEFT} HTBOTTOMLEFT = 16; {$EXTERNALSYM HTBOTTOMRIGHT} HTBOTTOMRIGHT = 17; {$EXTERNALSYM HTBORDER} HTBORDER = 18; {$EXTERNALSYM HTREDUCE} HTREDUCE = HTMINBUTTON; {$EXTERNALSYM HTZOOM} HTZOOM = HTMAXBUTTON; {$EXTERNALSYM HTSIZEFIRST} HTSIZEFIRST = HTLEFT; {$EXTERNALSYM HTSIZELAST} HTSIZELAST = HTBOTTOMRIGHT; {$EXTERNALSYM HTOBJECT} HTOBJECT = 19; {$EXTERNALSYM HTCLOSE} HTCLOSE = 20; {$EXTERNALSYM HTHELP} HTHELP = 21;
願望本文所述對年夜家的C#法式設計有所贊助。