2009-04-02 14 views
2

Ich arbeite mit Windows Forms, ist es möglich, ein Fenster zu erstellen, das Text in der Statusleiste hat, aber keinen Text in der Titelleiste am oberen Rand der Anwendung? (Vor allem, weil der standardmäßige Titeltext, der auf meinem Aero-Glas gedruckt wird, schrecklich aussieht, da er zu hoch ist und ich meinen eigenen Texttitel zeichne und offensichtlich nicht das Doppelte will). Diese Lösung (How to make a window have taskbar text but no title bar) ist nicht zufriedenstellend, da ich immer noch einen FixedDialog Fensterrahmen behalten möchte.Titelleiste Text eines Fensters entfernen, aber Statusleiste Text behalten

Danke für Ihre Hilfe alle.

** Ich kenne John Empfehlung, aber noch auf der Suche klarere Richtung, jeder frei fühlen, Ihre Ideen vorzubringen **

Antwort

9

Dies sollte es tun:

[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))); 
+0

Kann 'WindowThemeAttributeType' oder 'WTA_NONCLIENT' nicht auflösen. – GONeale

+0

Nm. Mit Hilfe dieses Artikels (http://www.codeproject.com/KB/vista/HideCaptionIcon.aspx) habe ich die Referenzen eingerichtet, die ich brauchte. Prost! Das war eine große Hilfe. – GONeale

+0

Pinvoke.net ist auch eine große Hilfe herauszufinden, diese Interop Strukturen und Sachen. –

-1

Was Sie sprechen würde erfordern Subklassifizieren in den Eingeweiden des bekommen Anwendung. Im Wesentlichen würden Sie Ihr Formular durch Abfangen bestimmter Nachrichten (wie WM_PAINT etc.) enthäuten. Es ist keine einfache Sache, wenn du noch nie auf diesem Level gearbeitet hast.

+0

Nun, ich bin Knie bereits tief unmanaged Bibliotheken API mit der DWM in Berufung. Ich bin froh, alle Lösungen zu hören. – GONeale

+0

Hier ist eine Einführung für den Fall, dass Sie Subclassing oder Entwicklung in den tiefen Interna von Windows nicht berührt haben: http://support.microsoft.com/kb/815775 – John