我面临一个非常奇怪的问题,无法弄清楚错误在哪里。我正在使用SendMessage_EX来获取指定行的文本:
SendMessage_Ex(hr.Handle, EM_GETLINE, l, buffer);
然后我这样调用两次方法:
StringBuilder buffer = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 5, buffer);
StringBuilder buffer1 = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 4, buffer1);
它正确获取第5行的文本,然后第4行获取文本,它不返回任何内容(buffer1为空)。 如果我将它反转并首先获得第4行然后第5行,它将返回第4行的文本而第5行没有任何内容。
这很奇怪,我确定我犯了一个简单的错误,但错误在哪里? 我感谢任何帮助。 :)
答案 0 :(得分:1)
EM_GETLINE消息希望缓冲区的大小在它用于缓冲区的相同参数中传递。我不能只设置StringBuilder的0索引而不将其初始化为某个值(得到索引异常)。
这似乎有效:
StringBuilder buffer = new StringBuilder(" ", 256);
buffer[0] = (char)256;
int Result = SendMessage_Ex(textBox1.Handle, EM_GETLINE, 3, buffer);
StringBuilder buffer1 = new StringBuilder(" ", 256);
buffer1[0] = (char)256;
int Result1 = SendMessage_Ex(textBox1.Handle, EM_GETLINE, 2, buffer1);
MessageBox.Show(buffer.ToString());
MessageBox.Show(buffer1.ToString());