2012-08-19 1 views
4

시스템 트레이 영역 시각적 테마는 MSDN에서 documented이므로 Microsoft에서 사용할 수있을 것으로 기대합니다. 트레이 영역과 잘 조화되도록 작업 표시 줄 밴드의 배경을 그리는 데 사용하고 싶습니다. 시도 할 때트레이 영역 시각 테마를 얻는 가장 좋은 방법은 무엇입니까?

OpenThemeData (NULL, L "CLOCK");

은 항상으로 실패합니다. 다음이 다음 Shell_TrayWnd 클래스와 윈도우를 찾아 클래스 TrayNotifyWnd와 자식의 위치를 ​​

  • 사용 FindWindowEx : 그 테마를 얻을 것으로 내가 유일한 방법은, 실제 시계 창을 찾아, 그 테마를 요청하는 것입니다 창 자식이 TrayClockWClass 클래스입니다.

  • OpenThemeData를 호출하고 실제 시계의 창 핸들을 전달하십시오.

명백히 내부 Windows 창 클래스 이름은 문서화되지 않았습니다. 위의 방법이 효과가있는 것처럼 보이지만 차라리 덜 연약한 것을 사용하고 싶습니다.

질문 : 트레이 영역의 시각적 테마를 얻는 방법이 있습니까?

답변

3

은 분명히 당신은 항상 NULL로 OpenThemeData를 사용할 수 없습니다
http://microsoft.public.platformsdk.shell.narkive.com/gkVTBGA2/cannot-open-theme-data-for-tray-notification-area

짐 배리 육년 전

당신은 당신이 SetWindowTheme을 호출 할 수있는 HWND이 필요합니다. pszSubAppName을 "TrayNotifyHoriz"또는 "TrayNotifyVert"로 설정하고 pszSubIdList를 NULL로 둡니다. 그런 다음 pszClassList를 "TrayNotify"로 설정하여 OpenThemeData를 호출 할 수 있습니다.

어떻게 이런 일을 저지른 사람인지는 완전히 저 밖에 있습니다. 비주얼 스타일 문서는 상당히 솔직하게 말해서 ab35mal이며 절대적인 수치는 입니다.
- Jim Barry, MVP (Windows SDK)