Fenster Teildurchsichtig

MaPa2701

Grünschnabel
Folgendes Problem

Ich benütze die Funktion AlphaBlend um mein Fenster durchsichtig zu machen.

Jetzt habe ich nur das Problem, dass ich bisher auf allen getesteten Rechner mit meinem Programm einen BlueScreen verursache -> Fehlermeldung: Grafikkartentreiber erneuern blablabla....

Wenn ich die Funktion ausschalte läuft alles perfekt!

ich aktualisiere meine anzeige mit einem Timer der mir aus eine Berechnung alle Angaben in ein Memo schreibt.

Wenn AlphaBlend = true, dann flackert die Anzeige beim aktualisieren, dann kommt auch irgendwann mal der Bluescreen

Wenn AlphaBlend = false , dann flacker die Anzeige nicht, und der Rechner stürzt dann auch nicht ab!

Wo liegt mein Problem, gibt es eigentlich eine andere Funktion mit der man sein Hintergrund Teildurchsichtig machen kann?

Ich bin hier schon am verzweifeln

Gruß
Marcus
 
Huhu,

versuch mal folgendes:

Code:
//---------------------------------------------------------------------------
//----------------------- CODE - Beispiel start -----------------------------
//---------------------------------------------------------------------------

#define _WIN32_WINNT 0x0500 

typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD); 

static PSLWA pSetLayeredWindowAttributes = NULL; 
static BOOL initialized = FALSE; 

//--------------------------------------------------------------------------- 
BOOL MakeWindowTransparent(HWND hWnd, unsigned char factor) 
{ 
   if (!initialized) 
   { 
      HMODULE hDLL = LoadLibrary ("user32"); 

      pSetLayeredWindowAttributes = 
         (PSLWA) GetProcAddress(hDLL, "SetLayeredWindowAttributes"); 

      initialized = TRUE; 
   } 

   if (pSetLayeredWindowAttributes == NULL) 
      return FALSE; 

   SetLastError(0); 

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

   if (GetLastError()) 
      return FALSE; 

   return pSetLayeredWindowAttributes (hWnd, 
                                       NULL, 
                                       factor, 
                                       LWA_COLORKEY|LWA_ALPHA); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MakeWindowTransparent(FindWindow("Shell_TrayWnd", NULL), 100); 

// 100 = AlphaBlendValue 
}
//---------------------------------------------------------------------------
//----------------------- CODE - Beispiel ende ------------------------------
//---------------------------------------------------------------------------
gefunden auf http://source-project.de

MFG DasLicht
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück