在我的C#程序不能使用SendMessage_EX两次

我现在面临一个很奇怪的问题,无法揣摩出的错误。 我使用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号线,它没有返回值(缓冲器1为空)。 如果我扭转它和第一个获得4号线,然后第5行,它返回第4行,没有什么为5行文字。

这是非常奇怪的,我敢肯定,我做一个简单的错误,但如果是错误的? 我感谢所有帮助。 :)

--------------解决方案-------------

所述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());

分类:C# 时间:2012-08-17 人气:0
本文关键词: 发信息
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.665 (s). 10 q(s)