Удалить текст строки заголовка окна, но сохранить текст строки состояния - PullRequest
2 голосов
/ 02 апреля 2009

Я работаю с Windows Forms, возможно ли создать окно с текстом в строке состояния, но без текста в строке заголовка вверху приложения? (Во многом потому, что стандартный текст заголовка, который я напечатал на моем стекле Aero, выглядит ужасно, так как он слишком высокий, и я рисую свой собственный текст заголовка и, очевидно, не хочу удваивать).

Это решение ( Как сделать окно с текстом панели задач, но без заголовка ) не является удовлетворительным, так как я все еще хочу сохранить FixedDialog рамку окна.

Спасибо за вашу помощь всем.

** Я знаю о рекомендации Джона, но все же в поисках более четкого направления, любой может свободно выдвигать ваши идеи **

Ответы [ 2 ]

9 голосов
/ 01 мая 2009

Это должно сделать это:

[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 голосов
/ 02 апреля 2009

То, о чем вы говорите, потребует создания подклассов, чтобы разобраться в сути приложения. По сути, вы очищаете форму, перехватывая определенные сообщения (например, WM_PAINT и т. Д.). Это непросто, если вы никогда раньше не работали на этом уровне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...