2012-02-27 2 views
1

WTL에서 CBitmapButton은 PNG와 같이 투명 레이어가있는 그림을 지원하지 않습니다. 그래서 GDI +를 사용하여 PNG를 그려 CPNGButton이라는 이름으로 코드를 사용자 지정합니다. XP를 우승 할 때 이상한 점이 있습니다. 단추가 다른 창에 의해 겹쳐지면 단추가 WM_PAINT를 먼저받은 다음 부모가 잘못된 결과를 초래합니다.WS_TABSTOP이 창 그리기 순서에 영향을주는 이유는 무엇입니까?

enter image description here --->enter image description here

내가 자원을 확인하고 버튼의 템플릿에서 WS_TABSTOP 속성을 제거는 상황이 부모 윈도우는, 먼저 버튼을 WM_PAINT를 수신, 확인 이동합니다. WS_TABSTOP이 창 그리기 순서에 영향을주는 원인은 무엇입니까?

답변

2

배경을 그릴 때 발생하는 현상입니다. 창문에 '구멍'이 생기면, 어떤 창문이든 그 뒤에있는 픽셀을 볼 수 있습니다. 또는 그러한 창이없는 경우 바탕 화면. 그렇지 않으면 WS_TABSTOP과 관련이 있습니다.

WS_EX_TRANSPARENT 스타일 플래그를 사용하십시오. 그러면 버튼의 부모가 클라이언트 윈도우에 자신을 그려 배경 픽셀을 제공하도록 Windows에 알립니다.

+0

이 상황은 WS_TABSTOP을 제거한 후에도 때로는 발생합니다. WS_EX_TRANSPARENT 추가 잘 작동합니다! – toki

관련 문제