国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

WinForm實現攔截窗體上各個部位的點擊特效實例

2020-01-24 02:23:19
字體:
來源:轉載
供稿:網友

本文實例講述了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#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 疏勒县| 扎鲁特旗| 富宁县| 承德县| 永胜县| 南岸区| 双峰县| 清流县| 花垣县| 察雅县| 溧阳市| 前郭尔| 清徐县| 阜南县| 和平县| 邯郸市| 宁蒗| 博湖县| 沂水县| 抚远县| 桐城市| 葫芦岛市| 闻喜县| 涟源市| 两当县| 德昌县| 寻乌县| 英超| 连平县| 永善县| 即墨市| 西乌| 苏尼特右旗| 兴隆县| 都兰县| 万山特区| 三门峡市| 栾川县| 且末县| 石柱| 泰兴市|