2012-02-27 90 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 2012-03-02 01:29:34