winform无标题窗体点击任务栏最小化、还原功能

做winform开发的时候,常常为了美化界面,把窗体的FormBorderStyle属性设置为None,即所谓的无标题窗体,这个时候,在任务栏鼠标右击是没有菜单的,那么如何吧默认的系统菜单还原回来呢?

 

第一步,引用命名空间

 

using  System.Windows.Forms;
using  System.Runtime.InteropServices;

 

第二部,申明win32方法,放在Form类里面

 

[DllImport( " user32.dll " , EntryPoint  =   " GetWindowLong " , CharSet  =  CharSet.Auto)]
        
public   static   extern   int  GetWindowLong(HandleRef hWnd,  int  nIndex);

        [DllImport(
" user32.dll " , EntryPoint  =   " SetWindowLong " , CharSet  =  CharSet.Auto)]
        
public   static   extern  IntPtr SetWindowLong(HandleRef hWnd,  int  nIndex,  int  dwNewLong);

 

第三步,在Form的Load事件中添加以下代码

 

ExpandedBlockStart.gif View Code
// 无标题窗体右键菜单
             int  WS_SYSMENU  =   0x00080000 //  系统菜单
             int  WS_MINIMIZEBOX  =   0x20000 //  最大最小化按钮
             int  windowLong  =  (GetWindowLong( new  HandleRef( this this .Handle),  - 16 ));
            SetWindowLong(
new  HandleRef( this this .Handle),  - 16 , windowLong  |  WS_SYSMENU  |  WS_MINIMIZEBOX);

 

第四步,把以下代码添加到Form的类中

 

ExpandedBlockStart.gif View Code
 1  protected   override  CreateParams CreateParams
 2  {
 3       get
 4      {
 5           const   int  WS_MINIMIZEBOX  =   0x00020000 ;   //  Winuser.h中定义   
 6          CreateParams cp  =   base .CreateParams;
 7          cp.Style  =  cp.Style  |  WS_MINIMIZEBOX;    //  允许最小化操作   
 8           return  cp;
 9      }
10 

 

通过以上步骤,就可以把系统默认菜单给恢复啦。

 

 

作者: 风雨彩虹

    

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

 

转载于:https://www.cnblogs.com/liubiaocai/archive/2011/07/18/2109808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值