2009-04-02 4 views
2

Windows Forms에서 작업하고 있습니다. 상태 표시 줄에 텍스트가 있지만 창 상단의 제목 표시 줄에 텍스트가없는 창을 만들 수 있습니까? 신청? (주로 내 Aero 글래스에 인쇄 된 표준 제목 텍스트가 너무 높고 나 자신의 텍스트 제목을 그리며 분명히 이중을 원하지 않기 때문에 끔찍한 것처럼 보이기 때문입니다.)창의 제목 표시 줄 텍스트는 제거하지만 상태 표시 줄 텍스트는 그대로 유지하십시오.

이 솔루션 (How to make a window have taskbar text but no title bar)은 여전히 ​​FixedDialog 창틀을 유지하기를 원하기 때문에 만족스럽지 않습니다.

도움 주셔서 감사합니다.

** 내가 존의 추천을 알고,하지만 여전히 명확한 방향, 사람이 앞으로 당신의 아이디어를 넣어 주시기 추구 **의 배짱에 들어가 하위 클래스를 필요로 무슨 얘기

답변

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

'WindowThemeAttributeType'또는 'WTA_NONCLIENT'을 확인할 수 없습니다. – GONeale

+0

Nm. 이 기사 (http://www.codeproject.com/KB/vista/HideCaptionIcon.aspx)의 도움으로 필요한 참조를 설정했다. 건배! 이것은 큰 도움이되었습니다. – GONeale

+0

Pinvoke.net은 이러한 interop 구조와 내용을 파악하는 데 큰 도움이됩니다. –

-1

신청. 즉, 특정 메시지 (예 : WM_PAINT 등)를 가로 채어 양식을 스키닝 할 수 있습니다. 이전에 그런 수준에서 일한 적이 없다면 간단하게 할 수 없습니다.

+0

잘 나는 깊은 DWM API를 사용하여 관리되지 않는 라이브러리를 호출 이미 무릎입니다. 그래서 모든 솔루션을 듣게되어 기쁩니다. – GONeale

+0

다음은 Windows의 내부 구조에서 서브 클래 싱 또는 개발을 다루지 않은 경우를위한 소개입니다. http://support.microsoft.com/kb/815775 – John