2009-08-25 4 views
1

Windows XP에서는 C++로 작성된 MDI 응용 프로그램이 좋습니다. 모든 MDI 하위 창은 상위 창처럼 보입니다. 좋은. 그러나 Windows 7 (및 아마도 Vista)에서는 부모 창에 에어로 글래스가 있고 자식 창은이 끔찍한 바꿀 수없는 베이비 파란 색입니다 (Windows 7 기본 테마와 동일). 그래서 내 응용 프로그램은 정말 아주 나쁜 것 같습니다.Windows 7에서 MDI 하위 창의 색상을 변경하십시오.

Office 2003을 실행하고 Excel()에서 MDI 하위 창을 보면이 동일한 동작을 볼 수 있습니다. 그러나 Office 2007에는 실제로 파란색, 은색 및 검정색의 세 가지 색상 테마가 있습니다. 이러한 테마는 어떻게 든 Excel의 MDI 하위 창까지 전달됩니다.

Microsoft에서 Office 2007에서이 작업을 수행하는 방법을 모르겠습니다. 트릭을 알고 싶습니다. 내 MDI 하위 창의 드로잉을 가져오고 인수해야하며 Office 2007 팀이 수행 한 작업을 복제해야합니다. 문제는 모든 DrawTheme * 호출을 사용하여 그래디언트를 얻고 둥근 모서리와 버튼을 모두 그려야한다는 것입니다. 그리고이 모든 시스템 호출에는 테마에 대한 핸들이 필요합니다. 그러나 SetWindowTheme을 사용하여 다른 테마의 색 구성표를 사용하도록 변경하는 것은 불가능합니다. 적어도 내가 말할 수있는 한.

누구든지 Microsoft에서 어떻게 수행했는지 알 수 있습니까?

답변

1

멋진 해결책은 아니지만, 웹에서 파고 들며, WinXP 둥근 모양을 평면 Win95/Win98/Win2k 창 스타일에 배치하는 방법에 대해 this article을 찾았습니다. WinXP 테마의 BMP 스냅 샷을 사용하고 bitblit 함수를 사용하여 창 프레임 테두리 주위의 적절한 크기로 늘립니다. 그의 데모 소프트웨어를 시험해 보았는데, Win7에서 WinXP Luna처럼 보입니다. 나는 그의 MDI 자식 윈도우 프레임 드로잉을 후킹하고 대체하기위한 기초로서 그의 예제를 사용할 수있다.

이 접근 방식의 문제점은 제목 표시 줄 너비를 고수하고 붙여야하며 제목 표시 줄 높이를 변경하는 전역 테마 조정에 ​​응답하지 않아야하거나 다른 크기로 여러 가지 BMP 스냅 샷을 가져와야한다는 것입니다. 내 목적에 따라, 하나의 두께를 고수하고 사용자 테마 조정을 무시하는 것이 좋습니다. BMP 스냅 샷을 사용하여 다른 테마를 적용 할 수 있으므로 Office 2007 MDI 하위보기도 적용 할 수 있습니다.

+0

GUI 표준을 위반했기 때문에 이런 식으로 일하는 것이 정말 싫지만 Microsoft가 Windows 7에서 MDI 어린이의 색상을 조정할 수있는 기능을 제공한다면이 점에 대해서 생각할 필요조차 없습니다. – dsmtoday

관련 문제