Esempio n. 1
0
        /// <summary>Common native callback for Task Dialogs. Will route events to the user event handler.</summary>
        /// <param name="refData">TODO: Currently unused, would need complex marshaling of data.</param>
        internal IntPtr CommonCallbackProc(IntPtr hWnd, uint uEvent, UIntPtr wParam, IntPtr lParam, IntPtr refData)
        {
            //Store window handle
            _hwnd = hWnd;

            //Handle event
            switch ((NativeMethods.TaskDialogNotification)uEvent) {
                case NativeMethods.TaskDialogNotification.TDN_CREATED:
                    //Dispatch buffered messages
                    DispatchMessageQueue();

                    if (Created != null)
                        Created(this, new EventArgs());
                    break;

                case NativeMethods.TaskDialogNotification.TDN_NAVIGATED:
                    //Dispatch buffered messages (copied in from the new task dialog we are navigating to)
                    DispatchMessageQueue();

                    if (Navigating != null)
                        Navigating(this, new EventArgs());
                    break;

                case NativeMethods.TaskDialogNotification.TDN_BUTTON_CLICKED:
                    if (ButtonClick != null) {
                        ClickEventArgs args = new ClickEventArgs((int)wParam);
                        ButtonClick(this, args);

                        //Return value given by user to prevent closing (false will close)
                        return (IntPtr)((args.PreventClosing) ? 1 : 0);
                    }
                    break;

                case NativeMethods.TaskDialogNotification.TDN_HYPERLINK_CLICKED:
                    if (HyperlinkClick != null)
                        HyperlinkClick(this, new HyperlinkEventArgs(Marshal.PtrToStringUni(lParam)));
                    break;

                case NativeMethods.TaskDialogNotification.TDN_TIMER:
                    if (Tick != null) {
                        TimerEventArgs args = new TimerEventArgs((long)wParam);
                        Tick(this, args);

                        //Return value given by user to reset timer ticks
                        return (IntPtr)((args.ResetCount) ? 1 : 0);
                    }
                    break;

                case NativeMethods.TaskDialogNotification.TDN_DESTROYED:
                    //Set dialog as not "showing" and drop handle to window
                    _hwnd = IntPtr.Zero;

                    if (Destroyed != null)
                        Destroyed(this, new EventArgs());
                    break;

                case NativeMethods.TaskDialogNotification.TDN_RADIO_BUTTON_CLICKED:
                    if (RadioButtonClick != null)
                        RadioButtonClick(this, new ClickEventArgs((int)wParam));
                    break;

                case NativeMethods.TaskDialogNotification.TDN_DIALOG_CONSTRUCTED:
                    if (Constructed != null)
                        Constructed(this, new EventArgs());
                    break;

                case NativeMethods.TaskDialogNotification.TDN_VERIFICATION_CLICKED:
                    if (VerificationClick != null)
                        VerificationClick(this, new CheckEventArgs((uint)wParam == 1));
                    break;

                case NativeMethods.TaskDialogNotification.TDN_HELP:
                    if (Help != null)
                        Help(this, new EventArgs());
                    break;

                case NativeMethods.TaskDialogNotification.TDN_EXPANDO_BUTTON_CLICKED:
                    if (Expanding != null)
                        Expanding(this, new ExpandEventArgs((uint)wParam != 0));
                    break;
            }

            return IntPtr.Zero;
        }
Esempio n. 2
0
        /// <summary>
        /// Common native callback for Task Dialogs.
        /// Will route events to the user event handler.
        /// </summary>
        /// <param name="refData">TODO: Currently unused, would need complex marshaling of data.</param>
        internal IntPtr CommonCallbackProc(IntPtr hWnd, uint uEvent, UIntPtr wParam, IntPtr lParam, IntPtr refData)
        {
            _hwnd = hWnd;

            //Handle event
            switch ((NativeMethods.TaskDialogNotification)uEvent)
            {
            case NativeMethods.TaskDialogNotification.TDN_CREATED:
                //Dispatch buffered messages
                DispatchMessageQueue();

                Created?.Invoke(this, EventArgs.Empty);
                break;

            case NativeMethods.TaskDialogNotification.TDN_NAVIGATED:
                //Dispatch buffered messages (copied in from the new task dialog we are navigating to)
                DispatchMessageQueue();

                Navigating?.Invoke(this, EventArgs.Empty);
                break;

            case NativeMethods.TaskDialogNotification.TDN_BUTTON_CLICKED:
                var evtButtonClick = ButtonClick;
                if (evtButtonClick != null)
                {
                    ClickEventArgs args = new ClickEventArgs((int)wParam);
                    evtButtonClick(this, args);

                    //Return value given by user to prevent closing (false will close)
                    return((IntPtr)((args.PreventClosing) ? 1 : 0));
                }
                break;

            case NativeMethods.TaskDialogNotification.TDN_HYPERLINK_CLICKED:
                HyperlinkClick?.Invoke(this, new HyperlinkEventArgs(Marshal.PtrToStringUni(lParam)));
                break;

            case NativeMethods.TaskDialogNotification.TDN_TIMER:
                var evtTick = Tick;
                if (evtTick != null)
                {
                    var args = new TimerEventArgs((long)wParam);
                    evtTick(this, args);

                    //Return value given by user to reset timer ticks
                    return((IntPtr)((args.ResetCount) ? 1 : 0));
                }
                break;

            case NativeMethods.TaskDialogNotification.TDN_DESTROYED:
                //Set dialog as not "showing" and drop handle to window
                _hwnd = IntPtr.Zero;

                Destroyed?.Invoke(this, EventArgs.Empty);
                break;

            case NativeMethods.TaskDialogNotification.TDN_RADIO_BUTTON_CLICKED:
                RadioButtonClick?.Invoke(this, new ClickEventArgs((int)wParam));
                break;

            case NativeMethods.TaskDialogNotification.TDN_DIALOG_CONSTRUCTED:
                Constructed?.Invoke(this, EventArgs.Empty);
                break;

            case NativeMethods.TaskDialogNotification.TDN_VERIFICATION_CLICKED:
                VerificationClick?.Invoke(this, new CheckEventArgs((uint)wParam == 1));
                break;

            case NativeMethods.TaskDialogNotification.TDN_HELP:
                Help?.Invoke(this, EventArgs.Empty);
                break;

            case NativeMethods.TaskDialogNotification.TDN_EXPANDO_BUTTON_CLICKED:
                Expanding?.Invoke(this, new ExpandEventArgs((uint)wParam != 0));
                break;
            }

            return(IntPtr.Zero);
        }
Esempio n. 3
0
        void dlg_Tick(object sender, TimerEventArgs e)
        {
            WindowsFormsAero.TaskDialog.TaskDialog dlg = (WindowsFormsAero.TaskDialog.TaskDialog)sender;

            cTicks += (int)e.Ticks;
            dlg.Footer = "Elapsed time: " + cTicks / 1000 + "s.";

            if (dlg.ProgressBarState == WindowsFormsAero.ProgressBar.States.Normal)
            {
                dlg.ProgressBarPosition += (int)e.Ticks / 100;
                e.ResetCount = true;
            }

            if (dlg.ProgressBarPosition >= 90)
            {
                WindowsFormsAero.TaskDialog.TaskDialog newDlg = new TaskDialog("Upload complete.", "Upload", "Thank you!");
                newDlg.CustomButtons = new CustomButton[] {
                    new CustomButton(Result.Cancel, "Close")
                };
                dlg.Navigate(newDlg);

                dlg.Tick -= tickHandler;
            }
        }