c# 无边框窗体显示任务栏菜单(系统菜单)

 

 
 

 c# 里面隐藏了form 的边框,任务栏就没有了系统菜单。如何显示呢,看下文。

调用方式 在form 构造函数 或者load中 TaskMenu.ShowSYSMENU(this);

         [DllImport("user32.dll" , EntryPoint = "GetWindowLong" , CharSet = CharSet.Auto)] 
        private  static  extern  int  GetWindowLong(HandleRef hWnd, int  nIndex); 
        [DllImport("user32.dll" , EntryPoint = "SetWindowLong" , CharSet = CharSet.Auto)] 
        private  static  extern  IntPtr SetWindowLong(HandleRef hWnd, int  nIndex, int  dwNewLong); 
 
        private  const  int  WS_SYSMENU = 0x00080000 ; 
 
        public  static  void  ShowSYSMENU(Form form) 
        { 
            int  windowLong = (GetWindowLong(new  HandleRef(form, form.Handle), -16 )); 
            SetWindowLong(new  HandleRef(form, form.Handle), -16 , windowLong | WS_SYSMENU | 0x20000  | 0x40000 ); 
            int  menu = Win32.GetSystemMenu(form.Handle.ToInt32(), 0 ); 
 
            if  (!form.ControlBox) 
            { 
                Win32.DeleteMenu(menu, Win32.SC_CLOSE, 0x0 );//关闭  
                Win32.DeleteMenu(menu, Win32.SC_MINIMIZE, 0x0 );//最小化  
                Win32.DeleteMenu(menu, Win32.SC_MAXIMIZE, 0x0 );//最大化  
            } 
            else   
            { 
                if  (!form.MinimizeBox) 
                { 
                    Win32.DeleteMenu(menu, Win32.SC_MINIMIZE, 0x0 );//最小化  
                } 
                if  (!form.MaximizeBox) 
                { 
                    Win32.DeleteMenu(menu, Win32.SC_MAXIMIZE, 0x0 );//最大化  
                } 
            } 
             
        } 

转载于:https://www.cnblogs.com/qingtianhua/p/3480998.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值