Estoy creando un cuadro de mensaje personalizado que le permite copiar texto, pero quería que se viera exactamente como un cuadro de mensaje estándar, así que me gustaría configurar el texto de los botones en el idioma del sistema, como lo hace la clase MessageBox . ¿Alguien sabe cómo obtener ese texto ("Sí", "No", "Cancelar", etc.) ?.¿Cómo obtengo el título del botón MessageBox?
Respuesta
Gracias por sus respuestas con el enlace de Snarfblam pude entender el resto.
class Program {
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
[DllImport("kernel32")]
static extern IntPtr LoadLibrary(string lpFileName);
private const uint OK_CAPTION = 800;
private const uint CANCEL_CAPTION = 801;
private const uint ABORT_CAPTION = 802;
private const uint RETRY_CAPTION = 803;
private const uint IGNORE_CAPTION = 804;
private const uint YES_CAPTION = 805;
private const uint NO_CAPTION = 806;
private const uint CLOSE_CAPTION = 807;
private const uint HELP_CAPTION = 808;
private const uint TRYAGAIN_CAPTION = 809;
private const uint CONTINUE_CAPTION = 810;
static void Main(string[] args) {
StringBuilder sb = new StringBuilder(256);
IntPtr user32 = LoadLibrary(Environment.SystemDirectory + "\\User32.dll");
LoadString(user32, OK_CAPTION, sb, sb.Capacity);
string ok = sb.ToString();
LoadString(user32, CANCEL_CAPTION, sb, sb.Capacity);
string cancel = sb.ToString();
LoadString(user32, ABORT_CAPTION, sb, sb.Capacity);
string abort = sb.ToString();
LoadString(user32, RETRY_CAPTION, sb, sb.Capacity);
string retry = sb.ToString();
LoadString(user32, IGNORE_CAPTION, sb, sb.Capacity);
string ignore = sb.ToString();
LoadString(user32, YES_CAPTION, sb, sb.Capacity);
string yes = sb.ToString();
LoadString(user32, NO_CAPTION, sb, sb.Capacity);
string no = sb.ToString();
LoadString(user32, CLOSE_CAPTION, sb, sb.Capacity);
string close = sb.ToString();
LoadString(user32, HELP_CAPTION, sb, sb.Capacity);
string help = sb.ToString();
LoadString(user32, TRYAGAIN_CAPTION, sb, sb.Capacity);
string tryAgain = sb.ToString();
LoadString(user32, CONTINUE_CAPTION, sb, sb.Capacity);
string cont = sb.ToString();
}
En el momento en que escribió ese mensaje, que podría haber escrito "Sí", "No", "aceptable", "Cancelar" ...
Estoy bastante seguro de que OP quiere tomar el texto del sistema para que esté en el idioma correcto (configuración regional del sistema) –
Exactamente Adán, eso es lo que necesito para no tener que agotar todos los idiomas – rodrigoq
Hay un artículo sobre codeproject.com que habla sobre la localización de los cuadros de mensaje - que podrían encontrar este enlace útil ...
http://www.codeproject.com/KB/miscctrl/Localizing_MessageBox.aspx
creo que sirve :)
¡Gracias, he estado buscando esto por tanto tiempo! Esto es MUY útil. – BornToCode
Estas cadenas parece que está almacenado en la biblioteca User32.dll. Hay detalles en this discussion en el foro Pure BASIC, hacia la parte inferior.
Muchas gracias porque pude encontrar la solución, publicaré el código en unos minutos. – rodrigoq
- 1. cómo obtengo el título de una URL
- 2. Resalte el botón predeterminado en ExtJS (3.x) MessageBox
- 3. ¿Cómo obtengo un control del botón Inicio en Windows 7?
- 4. Cómo cambiar UITabBarController ¿Más título de botón?
- 5. C#: ¿Cómo obtengo el título del documento de un elemento WebBrowser?
- 6. En WPF, ¿cómo obtengo el fondo del botón del tema actual?
- 7. iOS compare botón título de la cadena
- 8. C# Messagebox Con ComboBox
- 9. Problema con MessageBox (es)
- 10. Cómo cambiar el título del botón Atrás de UINavigationBar a "Atrás"
- 11. ¿Cómo obtengo el texto de un botón en Java?
- 12. ¿Cómo puedo cambiar el color del título de UIButton?
- 13. Cómo atrapar el evento del botón Atrás
- 14. androide Messagebox
- 15. Dos textos en el botón, título y subtítulo
- 16. MessageBox al cerrar el formulario
- 17. Cómo obtengo el valor de la etiqueta del remitente
- 18. ¿Título de botón personalizado en el cuadro de mensaje de .NET?
- 19. ¿Cómo obtengo el registro del servidor SVN?
- 20. ¿Cómo obtener el valor del título del documento en látex?
- 21. ¿Cómo creo un MessageBox en C#?
- 22. Cambiar el botón de búsqueda UISearchBar/teclado Título
- 23. ActionBarSherlock ¿Cambia el color del botón Atrás?
- 24. título personalizado del centro en UINavigationBar?
- 25. iOS - UIBarButtonItem - Posición vertical del título del botón Atrás no ajustando
- 26. Mostrar MessageBox en ASP
- 27. ¿Cómo cambio la ubicación de MessageBox?
- 28. C# formatear un MessageBox
- 29. messagebox para android mono
- 30. Orchard - Obtener el título del contenido del diseño del tema
Si no encuentra una solución, quizás pueda colocar el mensaje de texto en el portapapeles e informar al usuario que el mensaje está en el portapapeles. – Stormenet
Si presiona Ctrl + C cuando se muestra un MessageBox estándar, copiará el texto en el portapapeles de manera predeterminada. –
Gracias por la sugerencia, pero de todos modos necesito más personalización, como barras de desplazamiento para mensajes más grandes. – rodrigoq