> 백엔드 개발 > C++ > Qt/C 애플리케이션은 어떻게 Aero Snap, Shadow 및 애니메이션을 사용하여 경계 없는 창을 달성할 수 있습니까?

Qt/C 애플리케이션은 어떻게 Aero Snap, Shadow 및 애니메이션을 사용하여 경계 없는 창을 달성할 수 있습니까?

Linda Hamilton
풀어 주다: 2024-10-26 01:53:02
원래의
895명이 탐색했습니다.

How Can Qt/C   Applications Achieve Borderless Windows with Aero Snap, Shadow, and Animations?

Qt/C에서 Areo Snap, Shadow 및 애니메이션을 사용하여 경계 없는 창 만들기

Windows에서 경계 없는 창에는 다음과 같은 절충안이 따릅니다. Aero 그림자, 스냅, 최소화 애니메이션과 같은 기능이 손실됩니다. 그러나 Windows API를 활용하면 Office 2013 및 Steam과 같은 애플리케이션에서 볼 수 있는 원활한 경험을 복제할 수 있습니다.

경계 숨기기

창 테두리를 숨기려면 가로채기 창 프로시저의 WM_NCCALCSIZE 메시지.

<code class="cpp">case WM_NCCALCSIZE: {
    if (window->is_borderless) {
        return 0;
    } else {
        return DefWindowProc(hwnd, msg, wparam, lparam);
    }
}</code>
로그인 후 복사

Aero Shadow 활성화

창 주위에 빛나는 그림자를 표시하려면 DwmExtendFrameIntoClientArea 함수를 사용하세요.

<code class="cpp">MARGINS borderless = {1,1,1,1};
DwmExtendFrameIntoClientArea(hwnd, &borderless);</code>
로그인 후 복사

추가 기능 활성화

Steam과 같이 테두리 없는 창의 동작을 관찰하면 섀도우가 창 스타일 WS_POPUP | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION. 이 스타일은 Aero 스냅, 최대화 및 부드러운 최소화 애니메이션도 가능하게 합니다.

추가 참고 사항

  • 그림자는 클라이언트 영역의 투명 요소를 통해 보일 수 있습니다. , 뒤에 투명하지 않은 위젯이나 브러시가 필요합니다.
  • DwmSetWindowAttribute의 DWMWA_NCRENDERING_POLICY 및 DWMWA_ALLOW_NCPAINT 값은 일반적으로 필요하지 않습니다.

예제 프로젝트

실제 데모를 보려면 제공된 예제 프로젝트를 다운로드하세요. F11을 누르면 테두리 없는 모드와 창 모드 사이가 전환되고, F12를 누르면 테두리 없는 그림자가 활성화되거나 비활성화됩니다.

위 내용은 Qt/C 애플리케이션은 어떻게 Aero Snap, Shadow 및 애니메이션을 사용하여 경계 없는 창을 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿