2011-03-30 6 views
3

전체 시스템의 테마를 변경하지 않고 Windows Forms 응용 프로그램에 사용자 지정 비주얼 스타일 (.msstyle)을 적용 할 수있는 방법이 있습니까? 기본적으로 제어판에서 설정 한 것과 관계없이 응용 프로그램이 동일한 테마를 유지하기를 원합니다. 이것이 좋은 생각이라고 생각하는지 말해주지 마십시오. 일련의 네이티브 API 호출과 같이 독자적인 라이브러리를 포함하지 않는 방법이 있는지 궁금합니다. 감사!단일 Winforms 응용 프로그램에 사용자 지정 비주얼 스타일 (.msstyle) 적용

+1

문제를 해결 했습니까? 나는 그것도 필요로한다 –

+0

@ ThiagoSuchorski 나는 이것이 아마도 아마도 좋은 생각이 아닌 이유에 대한 대답을 남겼다. 나는 그것이 당신에게 어떤 지침을 줄 수 있기를 바랍니다. –

답변

0

SetWindowTheme 함수는 찾고있는 솔루션처럼 보입니다. 그것을 사용하려면 P/Invoke를해야 할 것입니다.

+0

SetWindowTheme을 찾았지만 내가 원하는 것을하지 않는다고 생각합니다. 이 함수는 스타일링 목적으로 윈도우 클래스를 변경하는 것만을 허용합니다. 내가 실제로 말할 수있는 한 완전히 다른 .msstyles 파일의 경로를 지정할 수는 없다고 생각합니다. – luksan

+0

빈 클래스를 창 클래스의 해당 함수에 전달하여 스타일을 사용하지 않도록 할 수는 있습니다 (그러나 AKA Windows Classic).하지만 원하는 것은 아닙니다. – luksan

+0

나는이 질문에 답을하지 않았지만이 대답을 받아들이고있다. 왜냐하면 나는 여기에 답을받지 않는 사람들을 시도했기 때문이다. 사실 요구 사항은 꽤 우스웠다. Windows API 호출의 매우 복잡한 가로 채기로만 수행 할 수 있다고 확신합니다. 기본적으로 스타일 라이브러리 처리 코드를 다시 구현합니다. – luksan

0

슬프게도 간단한 P/Invoke가 아니라 많은 후킹이 필요합니다.

관리 코드를 사용하여 새 컨트롤을 재정의하거나 만드는 것이 더 빠를 것입니다. 그렇지 않으면 네이티브 DLL의 도움으로 테마 호출을 연결해야하며, 사용자가하는 일에 매우주의해야합니다.

사실, 정확하게 구현하는 법을 모르겠습니다. 두렵습니다. 나는 그 때 더 도움이되는 응답을 줄 것입니다. Style Soft ("2014 년 이후 회사가 죽은 것 같다")에 의해 "VisualStyler"라고 불리는 지금 버려진 도구의 코드를 살펴보면 전체 진행 상태가 너무 복잡해 보입니다.

실제로 uxtheme을 사용하기로 결정한 경우 Windows 테마 엔진이 제공하는 시각적 스타일 파일 형식 및 hickups (현재는 좋은 편집기를 사용하고 있습니까?)에만 국한됩니다.

Microsoft에서 XP 용 테마 엔진을 만들었을 때 Microsoft가 머리를 맞춰서 응용 프로그램 개발자가 자신의 응용 프로그램 ID로 활용할 수있게되기를 바랍니다. 그러나 theming/Windows 제품 정체성 (다른 예로 DWM이 3D 변형 기능을 드러내지 않는 것이지만 응용 프로그램이 그런 물건을 남용하여 미친 짓을하는 것을 방지하는 것이 좋습니다)에서는 결코 그렇게하지 않는 것 같습니다.

옵션?

  • 관리 코드로 직접 컨트롤을 만들고 직접 그리기를 처리하십시오.
  • Win32 응용 프로그램을 제공하는 제품을 구입하십시오.
  • 응용 프로그램 테마를 만들 수있는 현대적이고 정교한 방법을 제공하는 WPF에 들어가기 시작하십시오.
관련 문제