private static PopUp.PopUpResult MessageBoxCreateAndOpen(Action <MessageWindow> SetOwnerAndCenter,
                                                                 ref string message, string title, MessageBoxImage icon, TextAlignment textAlignment,
                                                                 PopUp.PopUpButtons buttons, int autoCloseTimeoutMs = Timeout.Infinite, //infinite
                                                                 bool bReadonly = true)
        {
            MessageWindow wnd = new MessageWindow(buttons);

            wnd.Topmost = true;
            wnd.WindowStartupLocation = WindowStartupLocation.Manual; // sWindowStartupLocation;
            wnd.ConfigureAppearance(icon);
            wnd.Title = title;                                        //for task bar visible tetx
            wnd.txtMessage.TextAlignment = textAlignment;
            wnd.txtMessage.Text          = message;
            wnd.txtMessage.IsReadOnly    = bReadonly;
            //wnd.txtMessage.ToolTip = message;
            wnd.txtTitle.Text = title;
            //wnd.txtTitle.ToolTip = title;

            wnd.btn1.Content = buttons.btn1.Text;
            wnd.btn2.Content = buttons.btn2.Text;
            wnd.btn3.Content = buttons.btn3.Text;

            wnd.AdjustSize(message, true);

            SetOwnerAndCenter(wnd);

            //if timeout is set and window is not closed after timeout - close it
            Thread t = wnd.CloseWindowOnTimeout(autoCloseTimeoutMs);

            wnd.ShowDialog();

            //if closed before timeout - abort thread
            if (t != null)
            {
                t.Abort();
            }

            //get text from input box - return value
            message = wnd.txtMessage.Text;

            return(wnd._DialogResult);
        }
        public static PopUp.PopUpResult MessageBox(IntPtr ownerHwnd,
                                                   ref string message, string title,
                                                   MessageBoxImage icon,
                                                   TextAlignment textAlignment,
                                                   PopUp.PopUpButtons buttons,
                                                   int autoCloseTimeoutMs = Timeout.Infinite, //infinite
                                                   bool bReadonly         = true)
        {
            Action <MessageWindow> SetOwnerAndCenter = (wnd) =>
            {
                wnd.SetOwner(ownerHwnd);
                if (ownerHwnd != IntPtr.Zero)
                {
                    wnd.CenterToWindow(ownerHwnd);
                }
                else
                {
                    wnd.CenterToMainWindow();
                }
            };

            return(MessageBoxCreateAndOpen(SetOwnerAndCenter, ref message, title, icon, textAlignment, buttons, autoCloseTimeoutMs, bReadonly));
        }