AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Transparent und TopMost Problem

Ein Thema von Popov · begonnen am 3. Mär 2012 · letzter Beitrag vom 4. Mär 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Transparent und TopMost Problem

  Alt 3. Mär 2012, 17:50
Was stimmt daran nicht? Mal funktioniert es, mal funktioniert es nicht. Und wenn es nicht funktioniert, dann richtig. Nicht nur, dass es dann nicht TopMost ist, das Ding ist so weit Bottom-Most, dass es sogar unter den Desktopicons verschwindet.

Delphi-Quellcode:
procedure MakeWndTransparent(AHandle: HWND; Value: Boolean);
var
  curWinStyle: Integer;
begin
  curWinStyle := GetWindowLong(AHandle, GWL_EXSTYLE);
  if Value then
    SetWindowLong(AHandle, GWL_EXSTYLE, curWinStyle or WS_EX_TRANSPARENT)
  else
    SetWindowLong(AHandle, GWL_EXSTYLE, curWinStyle and (not WS_EX_TRANSPARENT));
end;

procedure MakeWndTopMost(AHandle: HWND; Value: Boolean);
const
  WndInsertAfter: array[Boolean] of HWnd = (HWND_TOPMOST, HWND_NOTOPMOST);
begin
  SetWindowPos(AHandle, WndInsertAfter[Value], 0, 0, 0, 0,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

procedure MakeWndTransparentAndTopMost(AHandle: HWND; Value: Boolean);
begin
  MakeWndTransparent(AHandle, Value);
  MakeWndTopMost(AHandle, Value);
end;
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Transparent und TopMost Problem

  Alt 3. Mär 2012, 17:59
Ok, ich hab es, aber auch nur zufällig. In den Tiefen des Programms wird beim AlphaBlendValue von 255 AlphaBlend auf False geschaltet, sonst True. Ich weiß zwar noch nicht warum, aber anscheinend bringt es das Ding komplett aus dem Konzept. Mein Programm unter den Icons habe ich auch noch nicht gesehen.

Frage gelöst.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Transparent und TopMost Problem

  Alt 3. Mär 2012, 18:09
AlphaBlend = WS_EX_TRANSPARENT
und
WS_EX_TOPMOST steckt im GWL_EXSTYLE

Daß sich dabei nun etwas gegenseitig beeinflußt, wäre also selbstverständlich.
$2B or not $2B

Geändert von himitsu ( 3. Mär 2012 um 18:12 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Transparent und TopMost Problem

  Alt 3. Mär 2012, 19:53
Daß sich dabei nun etwas gegenseitig beeinflußt, wäre also selbstverständlich.
Na, wir wollen nicht gleich übermütig werden. Ein mal vorne und noch mal vorne ergibt immer noch vorne. Wo du ein selbstverständlich siehst, würde ich gerne wissen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Transparent und TopMost Problem

  Alt 3. Mär 2012, 20:13
In den Tiefen des Programms wird beim AlphaBlendValue von 255 AlphaBlend auf False geschaltet, sonst True.
Wenn man an WS_EX_TRANSPARENT rumspielt, dann hat das natürlich eine Auswirkung auf AlphaBlend, was ich einfach mal als selbstverstädlich hinstellen würde.
$2B or not $2B
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Transparent und TopMost Problem

  Alt 3. Mär 2012, 20:21
Deine erste Bemerkung liest sich aber anders.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Transparent und TopMost Problem

  Alt 3. Mär 2012, 20:32
Zitat:
AlphaBlend = WS_EX_TRANSPARENT
und
WS_EX_TOPMOST steckt im GWL_EXSTYLE
Vielleicht hab ich micht so gut ausgedrückt.

Spielt man an WS_EX_TRANSPARENT rum, hat es einen Einfluß auf AlphaBlend.
und
Wird an SetWindowPos+HWND_NOTOPMOST/HWND_TOPMOST rumgemacht, dann hat es einen Einfluß auf GWL_EXSTYLE+WS_EX_TOPMOST.

Es beeinflußt sich alles alles irgendwie gegenseitig,
da kann es eventuell auch gewisse Nebenwirkungen Wechselwirkungen geben.
$2B or not $2B
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Transparent und TopMost Problem

  Alt 4. Mär 2012, 23:59
Eine Beobachtung: unabhängig dessen ob WS_EX_TOPMOST im GWL_EXSTYLE steckt und mit HWND_TOPMOST gewisse Wechselwirkungen eingeht, das oben beschriebene Problem liegt nicht daran.

Der Grund liegt wie bereits vermutet bei AlphaBlend gleich False. Ist AlphaBlend gleich False, spinnt die obere Funktion total. Hab zufällig wieder den Fehler gemacht und fand mein Programm plötzlich wieder unter den Icons. Und dieses mal spielte HWND_TOPMOST keine Rolle.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz