Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing Icon from a WPF window

Tags:

I am able to remove the window icon from WPF window using WinApi's, however I get the icon again in the application window when I run just the executable of the WPF project.

How do I remove the icon?

like image 651
shraddha Avatar asked Feb 26 '10 11:02

shraddha


People also ask

How do I hide a window in WPF?

An alternative to H.B.'s method is just to set the Visibility to hidden and set ShowInTaskbar to false. This still creates the window and lets it do its thing.


2 Answers

From WPFTutorial:

How to remove the icon of a WPF window

alt text

Unfortunately WPF does not provide any function to remove the icon of a window. One solution could be setting the icon to a transparent icon. But this way the extra space between the window border and title remains.

The better approach is to use a function provided by the Win32 API to remove the icon.

public partial class Window1 : Window {     public Window1()     {         InitializeComponent();     }      protected override void OnSourceInitialized(EventArgs e)     {         IconHelper.RemoveIcon(this);     } } 

A helper class used to remove the icon.

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)     {         // Get this window's handle         IntPtr hwnd = new WindowInteropHelper(window).Handle;          // Change the extended window style to not show a window icon         int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);         SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_DLGMODALFRAME);          // Update the window's non-client area to reflect the changes         SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE |                SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);     } } 
like image 124
Michal Ciechan Avatar answered Sep 20 '22 15:09

Michal Ciechan


Just add this WindowStyle="ToolWindow" to your window properties.

like image 40
Matiullah Karimi Avatar answered Sep 19 '22 15:09

Matiullah Karimi