2012-08-09 22 views
4

我使用QWinHost移植了一個win32控件,並將其放置在分層(半透明)小部件上。當我設置WS_EX_LAYERED標誌時,那麼對於win32移植控件沒有發生繪製。win32控件(QWinHost)沒有繪製在分層(即半透明)小部件(WS_EX_LAYERED)

SetWindowLong(winId(), 
      GWL_EXSTYLE, 
      GetWindowLong(winId(), GWL_EXSTYLE) | *WS_EX_LAYERED*); 
+0

歡迎來到堆棧溢出,不幸的是你的問題不適合網站的格式:它不能告訴你到目前爲止已經嘗試過什麼,你需要做什麼研究等等。你應該編輯你的問題到使其具體針對您遇到的特定問題。 – cmannett85 2012-08-09 10:27:29

回答

2

您需要告訴Windows如何繪製分層窗口。 MSDN說有兩種方法;你幾乎肯定想要SetLayeredWindowAttributes,因爲你不想改變控件的繪畫代碼。

所以

SetWindowLong(winId(), 
      GWL_EXSTYLE, 
      GetWindowLong(winId(), GWL_EXSTYLE) | WS_EX_LAYERED); 

之後添加

SetLayeredWindowAttributes(winId(), RGB(0,0,0), bAlpha, LWA_ALPHA); 

(調整,當然,您的需求)。

請注意,分層窗口必須是Windows 7下的頂層窗口;只有Windows 8及以上版本支持分層的子窗口。