获取ThunderForm类窗口的GWL_EXSTYLE 和WS_EX_LAYERED,返回值总是0,这类窗体没有这两种样式么?
ThunderFormDC类窗口获取正常。请大家帮忙确认一下。

解决方案 »

  1.   

    补充两句:主要问题是使用SetWindowLong设置ThunderForm为GWL_EXSTYLE失败。
      

  2.   

    只要是WINDOWS窗口,那么就都可以获取或者设置GWL_EXSTYLE, 至于窗体是不是支持WS_EX_LAYERED的扩展样式,这就需要看这个窗口程序的实现方式了,如果该程序绘制时就取消了WS_EX_LAYERED样式,那么你设置也没有,除非自己子类化它,然后自己控制重绘过程。
      

  3.   

    Option Explicit'在窗口结构中为指定的窗口设置信息
    Private Declare Function SetWindowLong Lib "user32" _
                    Alias "SetWindowLongA" (ByVal hwnd As Long, _
                                            ByVal nIndex As Long, _
                                            ByVal dwNewLong As Long) As Long
    Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    '从指定窗口的结构中取得信息
    Private Declare Function GetWindowLong Lib "user32" _
                    Alias "GetWindowLongA" (ByVal hwnd As Long, _
                                            ByVal nIndex As Long) As Long
    Private Const WS_EX_LAYERED = &H80000
    Private Const GWL_EXSTYLE = (-20)
    Private Const LWA_ALPHA = &H2
    Private Const LWA_COLORKEY = &H1
    '
    Private Sub Form_Load()
    Dim ret As Long
    ret = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
    If ret = 0 Then Debug.Print "error"
    SetWindowLong Me.hwnd, GWL_EXSTYLE, ret Or WS_EX_LAYERED
    SetLayeredWindowAttributes hwnd, 0, 200, LWA_ALPHA
    End Sub白接分也不好意思
      

  4.   

    WS_EX_LAYERED 是 Win2000 才有的属性,VB6 发布时还是 Win98,怎么支持?
    难道你能指望二战时期有人认得现在的欧元?
      

  5.   

    大家这么热心,实在是不好意思了。再加100分,给大家。
    在这里,我要特别感谢tiger_zhao长期给予我的帮助。
      

  6.   

    zzyong00:
      准备结贴时,发现您的帖子无法加分,查看一下是什么原因。
      

  7.   

    zzyong00:不好意思,正如您所说。现在我可以安心结帖了。