我创建了一个多行编辑控件一个简单的窗口:WinAPI的 - 问题将文本追加到一个编辑框
Edit = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL,
WS_CHILD | WS_VISIBLE | ES_MULTILINE,
20, 200, 200, 200,
hWnd, (HMENU)EDIT, GetModuleHandle(NULL), NULL);
如果我使用WM_SETTEXT消息,我没有得到errorrs设置文本,但如果我用EM_REPLACESEL 我得到错误5(ERROR_ACCESS_DENIED):
SendMessage(GetDlgItem(hWnd, EDIT), EM_REPLACESEL, 0, (LPARAM)TEXT("\r\nSome text"));
if (GetLastError()) {
/* Error 5 ERROR_ACCESS_DENIED */
}
同样的问题EM_SETSEL:
SendMessage(GetDlgItem(hWnd, EDIT), EM_SETSEL, (WPARAM)(0),(LPARAM)(-1));
SendMessage(GetDlgItem(hWnd, EDIT), EM_REPLACESEL, 0, (LPARAM)TEXT("\r\nSome text"));
if (GetLastError()) {
/* Error 5 ERROR_ACCESS_DENIED */
}
我注意到,如果我在EM_REPLACESEL之前发送WM_SETFOCUS消息没有错误:
SendMessage(GetDlgItem(hWnd, EDIT), WM_SETFOCUS, (WPARAM)GetDlgItem(hWnd, EDIT), 0);
SendMessage(GetDlgItem(hWnd, EDIT), EM_REPLACESEL, 0, (LPARAM)TEXT("\r\nSome text"));
if (GetLastError()) {
/* NO ERRORS */
}
我怎样才能解决这个问题呢? 每次我想将一些文本附加到我的Editbox时,是否必须在EM_REPLACESEL之前发送WM_SETFOCUS消息?
感谢您的帮助!
如果你只是'SetLastError(0)'发送'EM_REPLACESEL'消息之前? – 2011-01-21 22:14:35