2012-08-09 1618 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及以上版本支持分层的子窗口。