C# 删除窗口的标题栏文本,但保留状态栏文本
我正在使用Windows窗体,是否可以创建一个在状态栏中有文本,但在应用程序顶部的标题栏中没有文本的窗口?(主要是因为打印在我的Aero glass上的标准标题文本看起来很糟糕,因为它太高了,我正在绘制我自己的文本标题,显然不希望出现双重效果) 此解决方案()不令人满意,因为我仍然希望保留一个C# 删除窗口的标题栏文本,但保留状态栏文本,c#,.net,winforms,C#,.net,Winforms,我正在使用Windows窗体,是否可以创建一个在状态栏中有文本,但在应用程序顶部的标题栏中没有文本的窗口?(主要是因为打印在我的Aero glass上的标准标题文本看起来很糟糕,因为它太高了,我正在绘制我自己的文本标题,显然不希望出现双重效果) 此解决方案()不令人满意,因为我仍然希望保留一个FixedDialog窗口框架 谢谢大家的帮助 **我知道John的建议,但仍在寻求更明确的方向,任何人都可以自由地提出您的想法**您所说的需要子类化才能深入应用程序的本质。本质上,你会通过截取某些消息(如
FixedDialog
窗口框架
谢谢大家的帮助
**我知道John的建议,但仍在寻求更明确的方向,任何人都可以自由地提出您的想法**您所说的需要子类化才能深入应用程序的本质。本质上,你会通过截取某些消息(如WM_PAINT等)来剥皮你的表单。如果您以前从未在该级别工作过,那么这不是一件简单的事情。这应该可以做到:
[DllImport("uxtheme.dll")]
public static extern int SetWindowThemeAttribute(IntPtr hWnd, WindowThemeAttributeType wtype, ref WTA_OPTIONS attributes, uint size);
public enum WindowThemeAttributeType : uint
{
/// <summary>Non-client area window attributes will be set.</summary>
WTA_NONCLIENT = 1,
}
public struct WTA_OPTIONS
{
public uint Flags;
public uint Mask;
}
public static uint WTNCA_NODRAWCAPTION = 0x00000001;
public static uint WTNCA_NODRAWICON = 0x00000002;
WTA_OPTIONS wta = new WTA_OPTIONS() { Flags = WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON, Mask = WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON };
SetWindowThemeAttribute(this.Handle, WindowThemeAttributeType.WTA_NONCLIENT, ref wta, (uint)Marshal.SizeOf(typeof(WTA_OPTIONS)));
[DllImport(“uxtheme.dll”)]
公共静态外部设置WindowThemeAttribute(IntPtr hWnd、WindowThemeAttributeType wtype、ref WTA_选项属性、uint size);
公共枚举窗口特征属性类型:uint
{
///将设置非客户端区域窗口属性。
WTA_非客户端=1,
}
公共结构WTA_选项
{
国旗;
公众口罩;
}
公共静态uint WTNCA_NODRAWCAPTION=0x00000001;
公共静态uint WTNCA_NODRAWICON=0x00000002;
WTA_OPTIONS WTA=新WTA_OPTIONS(){Flags=WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON,Mask=WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON};
设置WindowThemeAttribute(this.Handle,WindowThemeAttributeType.WTA_NONCLIENT,ref WTA,(uint)Marshal.SizeOf(typeof(WTA_OPTIONS));
我已经深入到用DWMAPI调用非托管库的地步了。因此,我很高兴听到所有的解决方案。这里是一个介绍,以防您没有触及Windows:Nm深层内部的子类化或开发。在本文()的帮助下,我设置了所需的引用。干杯这是一个很大的帮助。Pinvoke.net也对弄清楚这些互操作结构和东西有很大的帮助。