zoukankan      html  css  js  c++  java
  • 如何通过鼠标控制无标头窗体

         这个问题也是来自论坛提问,同样是.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. }
  • 相关阅读:
    django中使用celery
    django中使用Redis
    Nginx编译和安装(超简单版)
    cookie和session
    forms组件
    反向解析(reverse())
    QuerySet对象
    models.py里的字段以及参数详解
    Q查询和F查询
    JgrId 无数据返回设置
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204869.html
Copyright © 2011-2022 走看看