Re: Layered Windows and things drawing through them
More suitable for microsoft.public.win32.programmer.gdi.
I would look at the WS_EX_COMPOSITED style and/or at the
CLIPCHILDREN/CLIPSIBLINGS styles
across your whole hierarchy of windows.
Or possibly, the controls are paiting using a screen-dc instead of using a
window-dc.
--
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of any included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm
"Golum256" <Golum256@discussions.microsoft.com> wrote in message
news:EC1AF278-C108-48AA-957E-D26695D07C90@microsoft.com...
First off let me apologize if I am submitting this to the wrong group...
I want my window to fade into view when they are shown, then fade out
later... so I wrote the below snippet of code to react to a timer...
if ( mCurrentAlpha <= 0 ) {
// We have hidden the window so let's get it in a good state...
KillTimer( mTimerIndex );
FadeOutComplete();
mCurrentAlpha = 0;
ShowWindow( SW_HIDE );
::SetLayeredWindowAttributes( GetSafeHwnd(), mOurColorRef, LWA_ALPHA, 0 );
// Turn off the layered style...
SetWindowLong( GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(),
GWL_EXSTYLE) & ~WS_EX_LAYERED );
TurnOff( GetSafeHwnd() );
}
else if ( mCurrentAlpha > 255 ) {
// We have shown the window so let's get it in a good state...
SetLayeredWindowAttributes( mOurColorRef, 255, LWA_ALPHA );
KillTimer( mTimerIndex );
FadeInComplete();
mCurrentAlpha = 255;
::SetLayeredWindowAttributes( GetSafeHwnd(), mOurColorRef, LWA_ALPHA, 0 );
// Turn off the layered style...
SetWindowLong( GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(),
GWL_EXSTYLE) & ~WS_EX_LAYERED );
TurnOff( GetSafeHwnd() );
}
else {
// Time to step the alpha!!!
SetLayeredWindowAttributes( mOurColorRef, (BYTE)mCurrentAlpha,
LWA_ALPHA );
Invalidate();
mCurrentAlpha += mAlphaStep;
}
}
This works great, HOWEVER... I keep getting controls from windows below me
drawing above my window... NOT the entire window from below, just some of
it's controls. My window is created with the topmost flag.
I am currently in the code trying to turn off the Layered window attribute
when I don't need it ( to see if that would help ).... but it doesn't
Anyone have any idea how I can fix this?
TIA