我目前正在研究一种自动化非托管外部代码的解决方案,因此我在将文本设置为RichEdit控件时遇到了一些麻烦。
我尝试过发送WM_SETTEXT,但它只将字符串的第一个字母设置为控件。
我尝试过的其他事情:PostMessage,EM_SETTEXTEX,SetWindowText,我没有成功尝试EM_STREAMIN,但是没有足够简单的消息示例。
richEdit的具体类是: WindowsForms10.RichEdit20W.app.0.141b42a_r14_ad1
我的代码:
IntPtr Text;
string bar;
...
//Function call
setRichEditText(Text, bar);
...
//Function declaration
private static int setRichEditText(IntPtr hWnd, string text) {
StringBuilder sb = new StringBuilder(text);
int result = SendMessage(hWnd, WM_SETTEXT, (IntPtr)sb.Length, sb.ToString());
return result;
}
...
//Imported function
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wParam, [MarshalAs(UnmanagedType.LPStr)] string lParam);
有没有办法让它设置整个字符串或者可能是一种解决方法?
答案 0 :(得分:0)
终于解决了!
使用过:
SendMessage(hWnd, WM_SETTEXT, 0, sb.ToString());