我正在使用Windows窗体,是否可以创建一个窗口,其状态栏中包含文本,但在应用程序顶部的标题栏中没有文本? (很大程度上是因为在我的Aero玻璃上打印的标准标题文字看起来很糟糕,因为它太高而且我正在绘制我自己的文字标题,显然不希望双重上升。)
此解决方案(How to make a window have taskbar text but no title bar)并不令人满意,因为我仍希望保留FixedDialog
窗口框架。
感谢您的帮助。
** 我知道约翰的建议,但仍然寻求更明确的方向,任何人都可以随意提出你的想法 **
答案 0 :(得分:9)
这应该这样做:
[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)));
答案 1 :(得分:-1)
您所谈论的内容需要子类化才能进入应用程序的内容。从本质上讲,你会通过拦截某些消息(如WM_PAINT等)来为你的表单着色。如果你以前从未在那个级别工作过,这不是一件简单的事情。