2013-12-09 2 views
1

기본 창 (양식) 경계선을 숨기고 (광산을 사용하고 싶지만) 스냅과 그림자를 사용할 수 있습니까?국경없는 상당한 크기의 응용 프로그램 (FormBorderStyle = Sizable)

(데스크톱) Win 8을 개발하면서 DWM API 함수 또는 그와 비슷한 것으로 생각했습니다.

추신 : 저는 DWM을 처음 사용했습니다.

+0

테두리를 숨기지 않고 테두리를 기본 테두리 위에 페인트 해보십시오. NC_PAINT 메시지를 차단하십시오. 그렇게하면 Windows 크기 조정 기능을 사용할 수 있습니다. –

+0

좋은 답변이지만, def 테두리를 숨기려면 ... WindowStyles와 함께 ... 어떻게해야합니까?! – VentyCZ

+0

완료, 더 이상 도움이 필요하지 않습니다. – VentyCZ

답변

0

좋아, 결국 내 문제에 대한 해결책을 찾았습니다.

원래 WinForms를 사용하고 있었지만 수년 동안 WPF로 변경되었습니다.

WPF에는 새로운 Windows 반복이있을 때마다 Window 내용/&이 변경되는 창 프레임/홀더 인 WindowChrome이라는 것이 있습니다.

Window의 WindowChrome 속성을 정말 쉽게 변경할 수있는 기능이 있다는 것을 알았습니다. 나는 사람이 기능을 사용하고자하는 경우 이해하기 주석이 쉽게 만들어 희망

/// <summary> 
/// Changes the WindowChrome of selected Window (wnd) &amp; adjust its properties 
/// </summary> 
/// <param name="wnd">Window to affect</param> 
/// <param name="glassThickness">Thickness of glass border (0 - no glass = no shadow, lower than 0 - whole window, higher than 0 - real border)</param> 
/// <param name="resBorder">Thickness of resize border - where Windows natively supports resizing of the window</param> 
/// <param name="topMove">Height of the window header/title - Windows native support for changing position of the window (from top), disables mouse events of controls underneath it</param> 
/// <remarks></remarks> 
public void NiceChrome(Window wnd, Thickness glassThickness, Thickness resBorder, int topMove) 
{ 
    WindowStyle = WindowStyle.SingleBorderWindow; 
    Shell.WindowChrome.SetWindowChrome(wnd, new Shell.WindowChrome 
    { 
     ResizeBorderThickness = resBorder, 
     GlassFrameThickness = glassThickness, 
     UseAeroCaptionButtons = false, 
     CaptionHeight = topMove, 
     CornerRadius = new CornerRadius(0), 
     NonClientFrameEdges = Shell.NonClientFrameEdges.None 
    }); 
} 

:

는 내가 새로운 크롬의 속성을 전달할 수 있습니다 내 자신의 기능을했다. 또한 두께 (-1)를 glassThickness에 사용하면 전체 창에 창 아래에 유리가 생기고 창 밖에서는 추가 공간/경계선이 없지만 여전히 그림자 효과가 유지된다는 것을 알았습니다.

또 다른 참고 사항은 최대화하면서 창 패딩을 변경해야한다는 것입니다. Windows가 더 이상 존재하지 않는 테두리/유리를 계속 잘라 내기를 원하기 때문입니다.

추신 : 영어가 모국어가 아닙니다. 문법에 문제가 있으면 수정하는 동안 문제를 해결하십시오. 감사합니다 & 예 저는 거의 2 세 (내 appologies) 내 자신의 질문에 대답하고 있습니다.