WinAPI метод SetWindowText не меняет текст кнопки. Причем, если попробовать получить текст через GetWindowText, то вернется, как раз, тот текст, который я пытался задать, а не отображаемый по факту. Забавно, но заголовок формы меняется, в отличии от кнопки, вызов метода из другого потока (с выключенным CheckForIlligalCross) и Invalidate кнопки ожидаемо не дают результата.
Upd. Примеры кода:
Класс WinAPI
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowText(HandleRef hWnd, StringBuilder lpString, int nMaxCount);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SetWindowText(IntPtr hWnd, [MarshalAs(UnmanagedType.LPTStr)] string lpString);
Класс Window
public static Window Find(IntPtr hwnd)
{
return new Window()
{
Handle = hwnd
};
}
public string GetText()
{
int capacity = WinAPI.GetWindowTextLength(new HandleRef(this, Handle)) * 2;
StringBuilder stringBuilder = new StringBuilder(capacity);
WinAPI.GetWindowText(new HandleRef(this, Handle), stringBuilder, stringBuilder.Capacity);
return stringBuilder.ToString();
}
public bool SetText(string text)
{
return WinAPI.SetWindowText(Handle, text);
}
Код формы:
button1.Click += (s, e) =>
{
var btn = Window.Find(button1.Handle);
btn.SetText("hello");
MessageBox.Show(btn.GetText());
};
Результат на скрине.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем приветПисал код, села батарея ноутбука, ноут выключился, после того как я загрузил систему по-новой в visual studio написанный мной код открывается...
Добрый вечер, уважаемые знатоки! Прошу Вас, помогите мне
Объявите структуру Entrant, которая представляет собой информацию о абитуриенте и содержит такие открытые поля: