using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using Brushes = System.Windows.Media.Brushes; using Size = System.Windows.Size; using Application = System.Windows.Application; using System.Runtime.InteropServices; using MouseEventArgs = System.Windows.Input.MouseEventArgs; using FlowDirection = System.Windows.FlowDirection; namespace GTPCorrgir { /// /// Interaction logic for VentanaResultado.xaml /// public partial class VentanaResultado : Window { [StructLayout(LayoutKind.Sequential)] public struct POINT { public int X; public int Y; } [DllImport("user32.dll")] public static extern bool GetCursorPos(out POINT lpPoint); public VentanaResultado(string message) { InitializeComponent(); MessageText.Text = message; // Medir el tamaño del texto System.Windows.Size textSize = MeasureTextSize(message); // Ajustar el tamaño del TextBlock MessageText.Width = textSize.Width; // Establece el ancho real del TextBlock al ancho medido MessageText.MaxWidth = SystemParameters.PrimaryScreenWidth * 2 / 3; // Límite máximo si necesario MessageText.MaxHeight = SystemParameters.WorkArea.Height / 2; // Límite máximo de altura // Configurar el tamaño de la ventana basado en el tamaño del texto this.Width = MessageText.Width + 20; // Considera los paddings del borde this.Height = textSize.Height + 20; // Posiciona la ventana POINT cursorPoint; if (GetCursorPos(out cursorPoint)) { this.Left = cursorPoint.X - this.Width / 2; this.Top = cursorPoint.Y - this.Height / 2; } // Eventos para cerrar y mover la ventana this.MouseLeftButtonDown += (s, e) => this.Close(); this.MouseMove += MainWindow_MouseMove; this.MouseLeave += MainWindow_MouseLeave; } private void MainWindow_MouseLeave(object sender, MouseEventArgs e) { Application.Current.Shutdown(); // Terminar la aplicación } private void MainWindow_MouseMove(object sender, MouseEventArgs e) { POINT cursorPoint; if (GetCursorPos(out cursorPoint)) { this.Left = cursorPoint.X - this.Width / 2; this.Top = cursorPoint.Y - this.Height / 2; } } private Size MeasureTextSize(string message) { // Establece el ancho máximo del texto como dos tercios del ancho de la pantalla double maxWidth = SystemParameters.PrimaryScreenWidth * 2 / 3; // Configurando FormattedText con el ancho máximo var formattedText = new FormattedText( message, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface(MessageText.FontFamily, MessageText.FontStyle, MessageText.FontWeight, MessageText.FontStretch), MessageText.FontSize, Brushes.Black, // Asegúrate de que estás usando System.Windows.Media.Brushes new NumberSubstitution(), TextFormattingMode.Display); // Aplicar el ancho máximo para que el texto se ajuste dentro de este límite formattedText.MaxTextWidth = maxWidth; // Calcular la altura necesaria para todo el texto dentro del ancho máximo return new Size(formattedText.Width, formattedText.Height); } private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { this.Close(); // Cerrar la ventana al hacer clic Application.Current.Shutdown(); // Terminar la aplicación } } }