Question

Je fais une boîte de message personnalisé qui vous permet de copier du texte, mais je voulais qu'il ressemble exactement comme une boîte de message standard, donc je voudrais mettre le texte des boutons pour quelle que soit la langue du système est, comme la classe MessageBox Est-ce que. Est-ce que quelqu'un sait comment obtenir ce texte ( « Oui », « Non », « Annuler », etc.)?.

Était-ce utile?

La solution

Merci pour vos réponses avec lien Snarfblam je pouvais comprendre le reste.

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();

}

Autres conseils

Ces chaînes semblent être stockés dans la bibliothèque User32.dll. Il y a des détails dans cette discussion sur le forum Pure Basic, vers le bas.

Il y a un article sur codeproject.com qui parle de localisant boîtes de message - vous pourriez trouver ce lien utile ...

http://www.codeproject.com/KB/miscctrl/Localizing_MessageBox.aspx

it helps :)

Vous pouvez ouvrir le System.Windows.Forms.dll réflecteur voir comment il met le texte du bouton.

Dans le temps que vous avez saisi ce message, vous auriez pu taper "Oui", "Non", "Ok", "Annuler" ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top