Screenshot "transparenter" Dialoge



  • Hi,

    Ich hätt da gern mal ein Problem.
    Und zwar geht es um die Transparenz von Dialogen. Meine Frage dazu im Anschluß nach dem Quellcode.

    BOOL CMyDialog::SetWndTransparency(HWND x_hwndWindow, BYTE x_nFactor)
    {
      typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
      PSLWA pSetLayeredWindowAttributes;
      HMODULE hDLL = NULL;
      BOOL bRet = FALSE;
    
      SetWindowLong(x_hwndWindow, GWL_EXSTYLE,
            GetWindowLong(x_hwndWindow, GWL_EXSTYLE) | WS_EX_LAYERED);
      hDLL = LoadLibrary ("user32");
    
      if(hDLL != NULL)
      {
        pSetLayeredWindowAttributes = (PSLWA) GetProcAddress(hDLL,"SetLayeredWindowAttributes");
    
        if (pSetLayeredWindowAttributes != NULL)
        {
          /**
          * Second parameter RGB(255,255,255) sets the colorkey to white
          * LWA_COLORKEY flag indicates that color key is valid
          * LWA_ALPHA indicates that ALphablend parameter (factor)
          * is valid
          */
          pSetLayeredWindowAttributes (x_hwndWindow, 0, x_nFactor, LWA_ALPHA);
          bRet = TRUE;
        }
        else
        {
          bRet = FALSE;
        }
    
        FreeLibrary(hDLL);
      }
      else
      {
        bRet = FALSE;
      }
    
      return bRet;
    }
    

    Meine Problem dazu:
    Unter XP läuft alles Problemlos. Wird als Faktor (BYTE x_nFactor) 0 übergeben, soll der Dialog vollständig angezeigt werden. Auch Screenshot's über [DRUCK] oder Programme wie "Hypersnap DX" funktionieren problemlos.

    Unter Windows 2000 sind meine Dialoge, welche über diese Funktion die Transparenz gesetzt bekommen haben, allerdings für Screenshot's generell "unsichtbar". Heißt also, ich kann von meiner Applikation einen Screenshot erzeugen und bekomme als Ergebnis meinen Desktop.

    Meine Frage:
    Welchen "Bug" hat Windows denn da schon wieder? Und hat einer von euch eine Idee/ ne aufzurufende Funktion, mit der ich die Dialoge auch unter Windows 2000 sichtbar bekomme? 😕

    Bin für jeden nützlichen Tipp dankbar ^^

    LG
    Anti


Anmelden zum Antworten