Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Transparentes Fenster als Overlay eines anderes Fensters(XP=working, Vista= not working)

1 view
Skip to first unread message

Jens Saathoff

unread,
Dec 16, 2009, 4:40:34 AM12/16/09
to
Hallo Leute!

Ich habe ein Problem mit der Erzeugung eines transparenten Overlays
für ein Fenster einer Applikation. Ich programmiere übrigens in C++...

Ich suche ein Fenster, z.B. Notepad und erzeuge ein Fenster
(transparent) mit einigen Controls und lege es als Overlay darüber.
Der Code dazu:

<code>
// set this window to transparent
void COverlayContainer::MakeTransparent()
{
#ifdef __WXMSW__
::SetWindowLong(GetHwnd(), GWL_EXSTYLE, GetWindowLong(GetHwnd(),
GWL_EXSTYLE) | WS_EX_LAYERED);
::SetLayeredWindowAttributes(GetHwnd(), RGB(255,0,255), wxGetApp
().alpha, LWA_COLORKEY | LWA_ALPHA);
::SetWindowLongPtr(GetHwnd(),GWLP_HWNDPARENT,(long)GetParentHWND());

m_EasyDataPopup->SetTransparent((wxByte) wxGetApp().alpha);
FitToParent(true);
#endif
}
</code>

GetHwnd() = Mein transparentes Fenster, GetParentHWND() = fremdes
Fenster

Unter XP ist das kein Problem, unter Vista jedoch werden die
ChildWindows des Fensters welches ich unter mein Overlay sortiere
nicht mehr angezeitgt, bzw. erst dann wenn ich das fremde Fenster
etwas bewege. Erscheint z.B. eine MessageBox in dem fremden Fenster
(GetParentHWND) und mein Overlay ist darüber, muß ich einfach die
Titelleiste anklicken, dann erscheinen Teile der MessageBox, z.B. nur
der OK-Button. Nach nochmaligem anklicken mit bewegen ist dann die
komplette MessageBox zu sehen.

Gibt es einen Weg dieses zu unterbinden?

Wäre sehr nett wenn mir jemand helfen könnte.

Vielen Dank!

Jens S.

0 new messages