gpt4 book ai didi

wpf - 在WPF窗口中隐藏图标

转载 作者:行者123 更新时间:2023-12-04 08:57:24 25 4
gpt4 key购买 nike

我知道有很多关于在WPF窗口(系统菜单所在的地方)的左上角隐藏或删除图标的问题。我已经尝试了很多,但是都没有用。这是我的要求:

  • 图标消失,不留任何空格(即无透明图标)
  • 窗口标题直接从窗口
  • 的左边缘开始
  • 右上角的关闭按钮仍然存在并且可以使用
  • 如果启用(可选,未测试),最小/最大按钮仍然存在
  • 没有定制绘制整个窗口框架
  • 在启用了Aero Glass的Windows 7上运行(是否有Windows 8?)
  • 在32和64位Windows(x86和x64构建)上工作
  • 与WPF .NET 4.0一起使用
  • 不在像Visual Studio这样的调试器中工作(如果也可以在调试器中工作,那将是很好的选择)
  • 也应在Windows XP上运行(可选)

  • 可用的答案基本上使用Windows API函数 GetWindowLongSetWindowLong,有时还使用 SetWindowPos来添加扩展的窗口样式 WS_EX_DLGMODALFRAME并调用 SWP_FRAMECHANGED。有时,其他样式也会被设置或取消设置。

    不幸的是,这些都不起作用。我要么没有没有关闭按钮的图标,要么两者都仍然存在。但也值得注意的是,所有这些内容均来自2010年或更早的版本。看来它的目标是早期的.NET或Windows版本,此后一直失败。

    我已经比较了系统对话框的窗口样式(来自Explorer)和WPF窗口与Microsoft Spy++(包括在Visual Studio中)的比较。但是我可以尝试将所有标志设置为相同,图标不会消失。就像黑魔法一样,它覆盖了所有其他API函数或物理原理。

    有人能在今天和指定的环境中仍然有效的解决方案吗?

    最佳答案

    当从带有图标的WPF应用程序创建对话框窗口时,上述方法不起作用。
    但是,添加以下两行时,该图标将从对话框窗口中正确消失:

    SendMessage(hwnd, WM_SETICON, new IntPtr(1), IntPtr.Zero);
    SendMessage(hwnd, WM_SETICON, IntPtr.Zero, IntPtr.Zero);

    (例如 https://connect.microsoft.com/VisualStudio/feedback/details/745230/wpf-window-cannot-be-displayed-without-titlebar-icon)

    关于wpf - 在WPF窗口中隐藏图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580430/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com