2013-03-09 4 views
4

Steam window 이것은 Steam의 클라이언트 창의 크기를 조정하는 스크린 샷입니다.어떻게 winapi를 사용하여 스팀과 같은 창을 달성하기 위해?

Steam의 클라이언트 창에는 두 가지 멋진 기능이 있습니다.

  1. 매우 반응하는 맞춤 창.
  2. 쿨 유리 표준 창에서 다른 효과를 크기를 조정

이의 내가 WINAPI를 사용하여 유사한 창을 만들고 싶어한다고 가정 해 봅시다 (강하게 한 관련 부작용이있을 수 있습니다 생각). 내가 어떻게 해?

나는 위젯 관리와 관련된 것들에 대해서는 묻지 않지만 기술적 인 winapi 트릭에 대해서는 묻지.

답변

6

기본적으로, 당신은 당신의 창문으로 거의 모든 것을 할 수 있습니다. 그러나 대부분의 트릭은 수동으로 구현해야합니다.

  1. '매우 반응이 좋습니다'는 무엇입니까? 창에 표준 경계선이 없다는 것을 의미하면 구현하기가 쉽습니다. 창을 만들 때 WS_BORDERWS_CAPTION을 지정하지 마십시오. 그 후에는 국경과 자막을 직접 그려야합니다. WM_ERASEBKGNDWM_PAINT 메시지를 처리 ​​할 때는 평소와 같이 배경, 메뉴를 그립니다.
  2. 이 효과는 나에게 버그와 더 비슷합니다. 이런 식으로 발생합니다 : 창이 크기가 조정되고 WM_SIZE 메시지가 처리되고 처리되며 Windows는 해당 메시지를 무시하는 WM_ERASEBKGND 메시지를 보냅니다. 따라서, 시스템은 아직 새로운 창 이미지로 채워지지 않은 새로운 창 프레임 주위에 새로운 그림자를 그립니다. 그리고 여기 우리는이 차가운 유리 효과를 얻습니다. 창문 에어로 그림자가있는 창문의 오래된 이미지. 창 그림자를 사용하지 않도록 설정하고이 효과를 살펴볼 수 있습니다. 사용자 지정 크기 조정 테두리를 만들하기 위해

, 당신은 이러한 기능을 유용하게 찾을 수 있습니다 LoadCursor, SetCursor, MoveWindow을.

사용자 지정 테두리를 그리려면 standart GDI 기능을 사용할 수 있습니다. 또한 소수의 하위 창을 만들고 드로잉을 위임 할 수 있습니다. 이것은 winapi의 기초입니다.