我想知道是否有一种简单的方法在运行时添加和删除WPF窗口的图标。这不是重复的问题;请仔细阅读。我需要一种方法来在程序运行时隐藏WPF窗口的图标并初始化窗口。我的所有搜索都会路由到此代码示例(来自Stack Overflow):
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);
......这不起作用。我已经广泛尝试过并且可以确认在64位Windows 10版本1607上它根本不起作用。我得到的另一个代码示例就是这个(也来自Stack Overflow):
const int ICON_SMALL = 0;
const int ICON_BIG = 1;
IntPtr hWnd = new WindowInteropHelper(this).Handle;
int currentStyle = (int)GetWindowLong(hWnd, GWL_EXSTYLE);
SetWindowLong(hWnd, GWL_EXSTYLE, (uint)currentStyle | WS_EX_DLGMODALFRAME);
SendMessage(hWnd, WM_SETICON, (IntPtr)ICON_SMALL, IntPtr.Zero);
SendMessage(hWnd, WM_SETICON, (IntPtr)ICON_BIG, IntPtr.Zero);
SetWindowPos(hWnd, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
......也不起作用。这两个选项都可以在整个站点中进行各种调整,但即使在Visual Studio之外,我也似乎无法使用它们。现在有一些只适用于Windows 10的新方法吗?似乎没有工作的部分是框架重绘。据我所知,它没有重绘任何东西。还有其他选择吗?感谢所有帮助。