Seite 1 von 1

Aero Glass unter Vista abschalten

Verfasst: 04.06.2007 14:00
von PBZecke
Hallo! Habe mich im Forum schon ewig nicht mehr blicken lassen, da ich in
letzter Zeit nur noch wenig programmiere, hoffe dass ihr mir dies verzeiht
und trotzdem ein wenig helft!

Mein Problem: Ich möchte unter Vista den Glas-Rahmen entfernen,
funktioniert auch, aber manchmal in völlig unregelmäßigen Abständen bleibt
der Rahmen, die Debug Ausgabe zeigt aber funktionieren an! Bitte mal unter
Vista probieren. Danke!

Code: Alles auswählen

OpenWindow(0,#PB_Default, #PB_Default, 400,300,"Aerotest",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

; Procedure ermöglicht das abschalten des glas-rahmens unter vista 
 Procedure DisableVistaNCRendering(HWND.l)

   #DWMNCRP_DISABLED =1
   #DWMWA_NCRENDERING_POLICY=2

   ncrp.l = #DWMNCRP_DISABLED;

   If OpenLibrary(0, "dwmapi.dll")
      *F = GetFunction(0, "DwmSetWindowAttribute")
      If *F
         Debug CallFunctionFast(*F, hwnd, #DWMWA_NCRENDERING_POLICY, @ncrp, SizeOf(ncrp))
      EndIf 
      CloseLibrary(0) 
   EndIf

EndProcedure


DisableVistaNCRendering(WindowID(0))


Repeat 
Until WaitWindowEvent() = #PB_Event_CloseWindow

Verfasst: 22.06.2007 12:57
von Tafkadasom2k5
Rufst du diesen Befehl öfter auf? Oder nur einmal zum Setzen des Styles? Wenn du ihn öfter aufrufst, ist das ja kein Wunder ^^

Verfasst: 22.06.2007 22:35
von PBZecke
Zum Testen rufe ich diesen Befehl öfter auf, ansonsten natürlich nur einmal!
Aber auch da funktioniert er beim ersten Aufruf manchmal einfach nicht.
Wenn man mit DwmGetWindowAttribute_ den Status abfruft liefert dieser
manchmal auch Glass deaktiviert obwohl Glass aktiv ist! Und genau dann
scheitert auch DwmSetWindowAttribute_

Das ganze scheint ein Windows-Bug zu sein! Warte aufs Servicepack und
hoffe dass das schon bekannt ist, weil mir kein Workaround dazu einfällt.