zoukankan      html  css  js  c++  java
  • 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事件中添加以下代码

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

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

    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 

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

    作者:风雨彩虹

        

        

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    微服务架构编码构建
    Keepalived+Nginx 高可用集群
    Nginx 动静分离
    Nginx 负载均衡
    Nginx 反向代理
    Nginx 常用命令
    React.js |Refs转发
    React.js |错误边界
    做一个简约的博客园皮肤
    React.js |Context的作用与用法
  • 原文地址:https://www.cnblogs.com/liubiaocai/p/2109808.html
Copyright © 2011-2022 走看看