Пример #1
0
        private static void SplashThreadProcedure()
        {
            bool isOK = true;
            MSG  message;

            if (SplashScreen.splashWindowProcedure == null)
            {
                isOK = SplashScreen.current.RegisterWindowClass();
            }

            if (isOK)
            {
                isOK = SplashScreen.current.CreateNativeWindow();
            }

            if (isOK)
            {
                message = new MSG();

                while (APIMessage.GetMessage(ref message, IntPtr.Zero, 0, 0))
                {
                    APIMessage.TranslateMessage(ref message);
                    APIMessage.DispatchMessage(ref message);
                }

                SplashScreen.current._hwnd = IntPtr.Zero;

                if (SplashScreen.current._windowToActivate != null)
                {
                    if (SplashScreen.current._handleToActivate != IntPtr.Zero)
                    {
                        SplashScreen.Current._windowToActivate = null;
                        APIWindow.SetForegroundWindow(APIWindow.GetLastActivePopup(SplashScreen.current._handleToActivate));
                        APIPainting.RedrawWindow(SplashScreen.current._handleToActivate, IntPtr.Zero, IntPtr.Zero, (uint)0x85);
                        SplashScreen.current._handleToActivate = IntPtr.Zero;
                    }
                }
            }
        }