博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF实用指南二:移除窗体的图标
阅读量:7088 次
发布时间:2019-06-28

本文共 1610 字,大约阅读时间需要 5 分钟。

原文:

WPF没有提供任何功能来移除窗体上的icon图标。一般的做法是设置一个空白的图标,如下图1:

这种做法在窗体边框与标题之间仍然会保留一片空白。

比较好的做法是使用Win32API提供的函数来移除这个图标。使用如下的代码:

public static class IconHelper    {        [DllImport("user32.dll")]        static extern int GetWindowLong(IntPtr hwnd, int index);        [DllImport("user32.dll")]        static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);        [DllImport("user32.dll")]        static extern bool SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter,                   int x, int y, int width, int height, uint flags);        [DllImport("user32.dll")]        static extern IntPtr SendMessage(IntPtr hwnd, uint msg,                   IntPtr wParam, IntPtr lParam);        const int GWL_EXSTYLE = -20;        const int WS_EX_DLGMODALFRAME = 0x0001;        const int SWP_NOSIZE = 0x0001;        const int SWP_NOMOVE = 0x0002;        const int SWP_NOZORDER = 0x0004;        const int SWP_FRAMECHANGED = 0x0020;        const uint WM_SETICON = 0x0080;        public static void RemoveIcon(Window window)        {            //获取窗体的句柄            IntPtr hwnd = new WindowInteropHelper(window).Handle;            //改变窗体的样式            int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);            SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_DLGMODALFRAME);            //更新窗口的非客户区,以反映变化            SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE |                  SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);        }    }
在窗体中只需重载OnSourceInitialized函数即可
protected override void OnSourceInitialized(EventArgs e)        {            IconHelper.RemoveIcon(this);        }
效果图:空白没有了。

转载地址:http://qgfql.baihongyu.com/

你可能感兴趣的文章
JEPF 软件快速开发平台今日入住 oschina
查看>>
开发者调查: HTML5 增长 Windows 下降
查看>>
《数据库技术原理与应用教程》一第1章 数据、数据管理与数据处理
查看>>
String被设计成不可变和不能被继承的原因
查看>>
《数据科学:R语言实现》——1.7 执行延迟计算
查看>>
《Adobe Illustrator大师班:经典作品与完美技巧赏析》—Helen Huang
查看>>
微软正式开源 DirectX 着色器
查看>>
阿里感悟(一)如何有效解决问题?
查看>>
《精通Spring MVC 4》——第1章 快速搭建Spring Web应用 1.1Spring Tool Suite简介
查看>>
《网站情感化设计与内容策略》一1.3 你好,马斯洛
查看>>
Logic Programming With Prolog学习笔记(一)
查看>>
Java核心技术卷I基础知识3.8.6 中断控制流程语句
查看>>
《Vim实用技巧(第2版)》——2.3 构造可重复的修改
查看>>
恢复高考这些年,关于高考的老照片
查看>>
首届开放科学奖|6个创造性案例示范如何玩转医学大数据
查看>>
《软件功能测试自动化实战教程》—第6章6.4节Action测试输入的参数化
查看>>
如何通过简单的3步恢复Windows 7同时删除Ubuntu
查看>>
网站建设设计前端开发需要学习html和div+css
查看>>
认知应用:大数据的下个转折点
查看>>
jQuery编程的最佳实践
查看>>