문제

나는 이 질문에 대한 답을 거의 확신하지만, 내가 간과한 것이 있기를 바랍니다.

일부 응용 프로그램은 Windows XP에서 실행되는 경우에도 캡션 표시줄과 버튼에 Vista Aero 모양과 느낌이 있는 것 같습니다.(예를 들어 Google Chrome과 Windows Live Photo Gallery가 떠오릅니다.) WinForms에서 이 작업을 수행하는 한 가지 방법은 테두리 없는 양식을 만들고 캡션 표시줄/버튼을 직접 그린 다음 재정의하는 것임을 알고 있습니다. WndProc 이동, 크기 조정 및 버튼 클릭이 예상대로 작동하는지 확인합니다. (자세한 내용은 확실하지 않지만 문서를 읽으려면 하루에 한 번 해낼 수 있을 것입니다.) 다른 것이 있는지 궁금합니다. 내가 간과하고 있는 더 쉬운 방법.아마도 제가 간과한 일부 API 호출이나 창 스타일이 있을까요?

나는 Google이 Chrome에서 자체 창 접근 방식을 사용하여 이에 대한 답을 얻었다고 생각합니다.누군가 새로운 정보를 얻을 경우를 대비해 질문을 다른 날 열어두겠습니다. 하지만 질문에 대한 답변은 제가 직접 답변했다고 생각합니다.

도움이 되었습니까?

해결책

다음은 애플리케이션에 사용자 정의 "크롬"을 사용하는 방법에 대한 전체 코드 샘플이 포함된 문서입니다.

http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

이거 정말 좋은 물건인 것 같습니다.해당 시리즈에는 총 3개의 기사가 있으며 Vista에서도 훌륭하게 실행됩니다!

다른 팁

구글 크롬은 ~ 아니다 Vista SDK를 사용하여 XP에서 이를 달성합니다.들여다보면 src\chrome\browser\views\frame 시스템 기능에 따라 브라우저 프레임을 정의하는 여러 파일이 있습니다.XP에서는 다음과 같습니다. OpaqueFrame 사용;19행에는 다음과 같은 내용이 있습니다.

// OpaqueFrame
//
//  OpaqueFrame is a CustomFrameWindow subclass that in conjunction with
//  OpaqueNonClientView provides the window frame on Windows XP and on Windows
//  Vista when DWM desktop compositing is disabled. The window title and
//  borders are provided with bitmaps.

리소스를 사용하는 것 같습니다. src\chrome\app\theme 프레임 버튼을 그립니다.

따라서 XP에서 Vista 테마를 활성화할 수 있는 저렴한 방법이 있을 것이라는 나의 희망은 물거품이 된 것 같습니다.이를 수행하는 유일한 방법은 창의 비클라이언트 영역을 수동으로 그리는 것입니다.나는 믿는다 이 같은 Windows가 창 이동 및 크기 조정과 같은 비클라이언트 작업을 처리할 수 있게 해주기 때문에 아마도 올바른 방향일 것입니다.

누군가 XP에서 Vista 테마를 마법처럼 활성화하는 방법을 찾을 수 없다면 이것이 질문에 대한 답변이지만 분명히 내 게시물을 답변으로 표시할 수는 없습니다.

Owen, 저는 XP에서 Chrome을 사용하고 있는데 Chrome 창에 "Vista Aero" 유리 테마가 표시되지 않습니다.제가 보기엔 짙은 파란색이에요.

원하는 컨트롤 및 창 제목 표시줄의 사용자 정의 테마라면 가능합니다.이를 정확하게 수행하는 WinForms용 뛰어난 무료 UI 도구 키트가 있습니다. 크립톤툴킷

@조나단 홀랜드:.NET에서 수행할 수 있는 작업입니까?

예, DllImport를 사용하고 있습니다. 여기 좋은 블로그 게시물이네요

Google Chrome은 Windows Vista SDK를 사용하여 XP에 유리 모양을 적용합니다.여기에서 다운로드할 수 있습니다:

http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&displaylang=en

이를 사용하여 XP에서 Glass Effect를 얻으려면 다음 DLL의 지연 로드를 활성화해야 합니다.

  • uxtheme.dll
  • dwmapi.dl

아니요, 유감스럽게도 이 작업을 수행하는 다른 쉬운 방법은 없습니다.

당신은 올바른 길을 가고 있습니다.사용자 정의 Winform을 생성한 다음 이 그림에 설명된 대로 진행해야 합니다. .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top