• 如何通过鼠标控制无标头窗体


         这个问题也是来自论坛提问,同样是.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.          private   void  Form1_MouseDown( object  sender, MouseEventArgs e)
    24.         {
    25.             ReleaseCapture();
    26.             SendMessage( this .Handle.ToInt32(), WM_SysCommand, SC_MOVE, 0);
    27.         }
    28.          private   void  Form1_Load( object  sender, EventArgs e)
    29.         {
    30.         }
    31.     }
    32. }

    方法二:

    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.          protected   override   void  WndProc( ref  Message m)
    12.         {
    13.              base .WndProc( ref  m);  if  (m.Msg == 0x84)
    14.             {
    15.                  switch  (m.Result.ToInt32())
    16.                 {
    17.                      case  1:
    18.                         m.Result =  new  IntPtr(2);  break ;
    19.                 }
    20.             }
    21.         }
    22.     }
    23. }
  • 相关阅读:
    2.ECMAScript 5.0
    1.Javascript简介
    9.定位
    HDU2032 杨辉三角
    HDU2058 The sum problem
    HDU2091 空心三角形
    HDU1166 敌兵布阵(树状数组模板题)
    HDU2049 不容易系列之(4)——考新郎
    Python网络爬虫与信息提取(三)(正则表达式的基础语法)
    HDU6576 Worker
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204869.html
Copyright © 2020-2023  润新知