2010-07-15 5 views
0

WPF 사용자 지정 창에서 크기 조정 테두리를 제거하고 싶습니다. WM_NCCALCSIZE 메시지를 처리하고 0을 반환해야한다는 것을 이미 알게되었습니다. 테두리를 제거하고 창을 창의 왼쪽 위 모서리에 맞 춥니 다. 문제는 이렇게하면 클라이언트 영역이 증가하고 WPF 루트 컨트롤은 증가하지 않는다는 것입니다. 이렇게하면 창 왼쪽과 아래쪽에 검은 색 가장자리가 생겨서 제거하고 싶습니다. 내가 VS2010 C# Windows XP를 사용하고 사전에 Windows XP 및 Windows 모두에서 7AllowTransparency를 사용하지 않고 WPF 창의 비 클라이언트 영역을 제거하는 방법

감사 작업이 싶습니다

.

편집 : 검은 색 가장자리를 일으키는 것이 무엇인지 알아 냈습니다. 뒤에있는 창입니다. 이제는 문제가 루트 요소가 전체 창을 차지하지 않는 것 같습니다. 마진을 음수 값으로 설정하면 검정 영역 위로 그립니다. 외관상으로는 레이아웃 패스가 좋으며 원하는 크기는 윈도우와 같지만 렌더링 크기가 다릅니다.

또한 나는 창 스타일에서 WS_THICKFRAME을 제거하여 전체 문제를 해결할 수 있음을 발견했습니다. 그 문제는 WS_THICKFRAME이 사용될 때만 활성화되는 크기 조정 기능입니다. WM_NCHITTEST를 사용하여 크기를 조정하고 창에 크기 조정 테두리가 없다는 것을 알고 있으면 크기 조정 기능이 종료됩니다.

루트 요소가 검정 창 배경을 제거하거나 두꺼운 프레임없이 기본 크기 조정 기능을 사용하도록 전체 창을 차지하게하고 싶습니다.

감사합니다.

답변

0

검은 색 영역의 이유를 발견했습니다. 다른 누군가가 만든 코드는 어떻게하면 프레임 워크의 레이아웃 패스와 루트 요소의 정확한 크기가 어찌 되었든 검은 영역을 일으키는 것으로 보입니다. 다른 프로젝트에서 WM_NCCALCSIZE를 처리했으며 매력처럼 작동했습니다.

원래 창 기능이 모두있는 사용자 지정 창을 만드는 유휴 방법을 찾았음에도 불구하고 Microsoft에서 제공하는 표준 창을 사용하기로 결정하여 내 프로그램이 Windows와의 호환성을 갖도록했습니다 .

누군가 WPF 윈도우 사용자 정의 코드를 사용하거나 도움을 원한다면 여기에 의견을 말하면 적어도 내 모든 연구가 헛되지 않을 것입니다.

읽어 주셔서 감사합니다.

+1

WM_NCCALCSIZE 처리 예제를 보여주세요. –

관련 문제