현재 Windows Forms에서 사용자 정의 프레임 (DevExpress 'SkinManager.EnableFormSkins
function 사용)을 사용하여 최상위 창을 만들려고하고 있으며 은 Windows 7 Aero에서 실행될 때이라는 창 주위에 그림자가 있습니다.WM_NCPAINT를 사용할 수 있고 Aero의 창 뒤에 그림자가 생길 수 있습니까?
와 나는 같이 할 :
창은 현재 다음과 같습니다
가 (즉, 창 주위에 부드러운 그림자가).
나는 연구와CS_DROPSHADOW
,
asking the DevExpress support,
reading on SO,
other blogs 및
MSDN documentation 사용을 포함하려고 착오를 많이했다.
아직 아무것도 내 창문에 그림자를 가져 오지 않습니다.
내 요구 사항이 단순히 달성 할 수 없다고 생각하지만, 여전히 기회를 포착하고 여기에서 질문하고 싶습니다.
(나는 심지어 내 실제 창 뒤에 기본 에어로 창을함으로써이 문제를 날조 생각하지만, 구현하는 데 실패 ...)
내 질문은 :
이 창을 할 수 있나요 맞춤형 비 클라이언트 (NC) 영역이 있고 Aero가 활성화되어있을 때이 창 주위에 그림자가 생깁니 까?
이것은 가능하다고 생각합니다. wndproc를 덮어 쓰고'if (m.Msg == WM_ACTIVATE) DwmExtendFrameIntoClientArea (this.Handle, ref MARGIN);를 입력하십시오. 'MARGIN은 1로 채워야합니다 (0은 작동하지 않습니다). 'Margin MARGIN = {1,1,1,1}; 또한 FrameBorderStyle은이 작업을 위해 FrameBorderStyle.Sizeable이어야합니다. 그래서 당신은 이것을해야합니다 :'if (m.Msg == WM_NCCALCSIZE && m.WParam! = IntPtr.Zero) {m.Result = IntPtr.Zero; 반환; }'프레임 테두리를 제거합니다. –