win32 api 如何刷新一个Edit控件的文本缓冲区。不是MFC
问题详细:鄙人使用CreateWindow()函数创建了一个Edit子窗口控件,它具有ES_MULTILINE | ES_AUTOVSCROLL等属性。现在做如下流程:在这个子窗口控件中先输入几个文字,点击回车按钮,然后将该控件的内容设置为“”,问题出现了:此时光标出现在第二行的行首,但我需要的是光标出现在第一行行首。新手,渴望得到前辈们的指导!谢谢!
不太明白你的问题,你是要修改Edit控件中的文本内容吗?
鄙人使用CreateWindow()函数创建了一个Edit子窗口控件,它具有ES_MULTILINE | ES_AUTOVSCROLL等属性。现在做如下流程:在这个子窗口控件中先输入几个文字,点击回车按钮,然后将该控件的内容设置为“”,问题出现了:此时光标出现在第二行的行首,但我需要的是光标出现在第一行行首。新手,渴望得到前辈们的指导!谢谢!
@线木偶: 相当于是想把回车键当退格键用吗?
@线木偶: 也不对啊,如果按回车就把内容置为空,为什么还要设置允许多行呢?
@Rainier-Soft.Com: 简单点说就是现在要怎么把光标定位到第一行第一列。
@线木偶:给这个控件发送键盘消息,按键为左方向键,应该就OK了。
@Rainier-Soft.Com: 我试过:SendMessage(hwnd,VK_HOME,wParam,lParam);
SendMessage(hwnd,VK_LEFT,wParam,lParam)这两个消息,但均没有成功。您能留个邮箱吗?我把源码发给你下。你要是有时间就麻烦您帮我看下。我都弄了好几天了。还没弄出来,但又急着要
@线木偶: 用PostMessage吧
PostMessage(hwnd,0x100,37,0);
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
@Rainier-Soft.Com: 额,这个函数这么用是什么意思呢?能不能说详细点。拜托了
@线木偶: 你可以搜索一下,网络上应该有很多这个API相关的资料。
@Rainier-Soft.Com: 非常感谢您!终于解决了,感谢!PostMessage(hwnd,0x100,37,0);
我想知道,0X100,37,0,这几个数字分别代表什么意思你?为什么SendMessage不行呢?
@线木偶: PostMessage和SendMessage具体哪里不同,我也没去仔细研究,这几个参数分别代表的是消息类型,消息值,后面一个是没有意义的参数。
0x100表示消息是键盘按下事件。
37表示是左方向键。
给你些链接参考一下吧
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644944(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644927(v=vs.85).aspx#system_defined
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646280(v=vs.85).aspx
@Rainier-Soft.Com: 谢谢!