zoukankan      html  css  js  c++  java
  • c# Wndproc的使用方法

    protected override void WndProc(ref Message m) 
    { 
        const int WM_SYSCOMMAND = 0x0112; 
        const int SC_CLOSE = 0xF060; 
        if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE) 
        { 
            // 屏蔽传入的消息事件 
            this.WindowState = FormWindowState.Minimized; 
            return; 
         } 
        base.WndProc(ref m); 
    }
    

      

      protected override void WndProc(ref    Message m)
              {
                  const int WM_SYSCOMMAND = 0x0112;
                  const int SC_CLOSE = 0xF060;
                  const int SC_MINIMIZE = 0xF020;
                  if (m.Msg == WM_SYSCOMMAND && ((int)m.WParam == SC_MINIMIZE || (int)m.WParam == SC_CLOSE))
                  {
                      //最小化到系统栏 
                     this.Hide();
                      return;
                  }
                  base.WndProc(ref    m);
              } 
    

    重写 WndProc函数来同时实现无标题栏的窗体移动和禁止双击窗体最大化

    protected override void WndProc(ref Message m)
             {
                 const int WM_NCHITTEST = 0x84;
                 const int HTCLIENT = 0x01;
                 const int HTCAPTION = 0x02;
                 const int WM_SYSCOMMAND = 0x112;
                 const int SC_MAXMIZE = 0xF030;
                 const int WM_NCLBUTTONDBLCLK = 0xA3;
                 switch (m.Msg)
                 {
                     case 0x4e:
                     case 0xd:
                     case 0xe:
                     case 0x14:
                         base.WndProc(ref m);
                         break;
                     case WM_NCHITTEST://鼠标点任意位置后可以拖动窗体
                         
                        this.DefWndProc(ref m);
                         if (m.Result.ToInt32() == HTCLIENT)
                         {
                             m.Result = new IntPtr(HTCAPTION);
                             return;
                         }
                         break;
                     case WM_NCLBUTTONDBLCLK://禁止双击最大化
                         Console.WriteLine(this.WindowState);
                         
                            return;
     
                       
                        break;
     
                    default:
                         
                        base.WndProc(ref m);
                         break;
                 }
             }
    

      

  • 相关阅读:
    C#与C++中struct和class的小结
    C#中string的小结
    树的一些操作——遍历,前序和中序建立后续
    一个快速、高效的Levenshtein算法实现——代码实现
    整数拆分
    阶乘结果中0的个数
    普莱菲尔密码矩阵生成算法
    CTF密码学总结
    盲文对照表
    实验吧-古典密码
  • 原文地址:https://www.cnblogs.com/icejd/p/3909680.html
Copyright © 2011-2022 走看看