﻿'处理阴影窗口事件
   Select Case wMsg
      Case WM_MOVE             
         Dim sWnd As HWND = GetPropW(hWndForm, "FCP_SHADOW_HWND")             
         if sWnd Then             
            Dim f As Long = {offsets}     
            dim rc As Rect             
            GetWindowRect(hWndForm, @rc)   'x=GET_X_LPARAM(lParam),y=GET_Y_LPARAM(lParam)  使用这个是表示客户区位置，因此不准确。         
            SetWindowPos(sWnd, hWndForm, rc.left - AfxScaleX(f), rc.top - AfxScaleY(f), 0, 0, SWP_NOSIZE Or SWP_NOACTIVATE)             
         End if             
      Case WM_Size
         Dim sWnd As HWND = GetPropW(hWndForm, "FCP_SHADOW_HWND")             
         if sWnd Then  
            if wParam = SIZE_RESTORED  AndAlso IsWindowVisible(hWndForm) <>0 Then 
'               PrintA "WM_Size"
               if IsWindowVisible(sWnd) Then 
                  FLY_yfvb_UpdateView sWnd, hWndForm, {offsets}, 255
               Else
                  Threaddetach ThreadCreate(Cast(Any Ptr, @FLY_yfvb_Shadow_window_delay_display), sWnd) '经典调用方法
               End if 
            Else
               ShowWindow(sWnd, SW_HIDE)
            End if   
         End if 
      Case WM_SHOWWINDOW
         Dim sWnd As HWND = GetPropW(hWndForm, "FCP_SHADOW_HWND")  
         if sWnd Then 
            if wParam = FALSE OrElse IsIconic(hWndForm) OrElse IsZoomed(hWndForm) Then 
'               PrintA "SW_HIDE"
               ShowWindow(sWnd, SW_HIDE)
            Else
               SetWindowPos(sWnd, hWndForm, 0,0 , 0, 0,SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW) 
            end if 
         End if 
      Case WM_NcActivate
         Dim sWnd As HWND = GetPropW(hWndForm, "FCP_SHADOW_HWND")             
         if sWnd Then  
            if IsIconic(hWndForm) = 0 AndAlso IsWindowVisible(hWndForm) <>0 Then 
                  FLY_yfvb_UpdateView sWnd, hWndForm, {offsets}, IIf(wParam, 255, 150)  '默认为 PostMessageW
                  SetWindowPos(sWnd, hWndForm, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW)
            Else
               ShowWindow(sWnd, SW_HIDE)
            End if 
         End if             
      Case WM_Destroy             
         Dim sWnd As HWND = GetPropW(hWndForm, "FCP_SHADOW_HWND")             
         if sWnd Then             
            RemovePropW hWndForm, "FCP_SHADOW_HWND"             
             PostMessage sWnd, WM_CLOSE, 0, 0
         End if             
   End Select  
   '处理虚拟控件事件                  