не могу использовать SendMessage_EX дважды в моей программе на c # - PullRequest
1 голос
/ 13 августа 2011

Я сталкиваюсь с очень странной проблемой и не могу понять, в чем ошибка. Я использую 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.

Это очень странно, и я уверен, что делаю простую ошибку, но где ошибка? Я ценю любую помощь. :)

1 Ответ

1 голос
/ 13 августа 2011

Сообщение EM_GETLINE хочет, чтобы размер буфера передавался в том же параметре, который он использует для буфера.Я не мог просто установить индекс 0 StringBuilder, не инициализируя его каким-либо значением (получил исключение индекса).

Кажется, это работает:

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