Markus Rechberger Ответов: 1

WM_SETTEXT пишет китайские буквы


Я хочу установить текст моего элемента управления редактированием. Когда я это делаю, новый контент-китайский.
Например, это:
[DllImport("user32.dll")]
public static extern int SendMessageW([InAttribute] System.IntPtr hWnd, int Msg, int wParam, string lParam);

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
internal static extern IntPtr GetFocus();

IntPtr c = GetFocus();
SendMessageW(c, 12, 0, "Test"); //Notice that 12 = WM_SETTEXT

устанавливает свой контроль, изменить для этого: 敔瑳

Что я уже пробовал:

Я попытался найти решение в интернете и задал тот же вопрос здесь

Dave Kreskowiak

Нам нужно будет увидеть остальную часть соответствующего кода, особенно ваше определение SendMessageW.

[no name]

Ой, прости, я совсем забыла. Теперь я добавил определение SendMessageW

1 Ответов

Рейтинг:
8

Richard Deeming

Согласно с pinvoke.net[^], вам нужен MarshalAs атрибут строкового параметра:

[DllImport("user32.dll")]
public static extern int SendMessageW(
    [InAttribute] System.IntPtr hWnd, 
    int Msg, 
    int wParam, 
    [MarshalAs(UnmanagedType.LPWStr)] string lParam);