CEdit::SetHandle
调用此函数设置句柄将由使用多行编辑控件的本地内存中。
void SetHandle(
HLOCAL hBuffer
);
参数
- hBuffer
包含的句柄。本地内存中。必须由以前的创建了使用 LMEM_MOVEABLE 标志,此处理调用 LocalAlloc Windows功能。内存假定包含一个Null终止的字符串。如果不是这样,则应设置分配的内存的第一个字节为0。
备注
编辑控件会将使用该缓冲区存储当前显示的文本而不是将其自己的缓冲区。
此成员函数由多行仅处理编辑控件。
在应用程序设置新内存处理之前,使用 LocalFree Windows功能,则应使用 GetHandle 成员函数获取处理到当前内存缓冲区和释放该内存。
SetHandle 清除移除缓冲区( CanUndo 成员函数然后返回0)和内部修改标志( GetModify 成员函数然后返回0)。编辑控件的窗口重新绘制。
可以使用在多行的功能在对话框中的编辑控件的此成员,仅当使用设置的 DS_LOCALEDIT 样式标志创建了对话框。
说明 |
---|
GetHandle 不会与Windows 95 /98一起使用。如果对Windows 95 /98的 GetHandle,它将返回 NULL。GetHandle 将按文档在Windows NT下,版本3.51和更高版本。 |
有关更多信息,请参见 EM_SETHANDLE、 LocalAlloc和 LocalFree 在 Windows SDK。
示例
// The string to set in the edit control.
CString strString(_T("George Frideric"));
// Initialize the new local handle.
size_t cbSize = (strString.GetLength() + 1) * sizeof(TCHAR);
HLOCAL h = ::LocalAlloc(LHND, cbSize);
LPTSTR lpszText = (LPTSTR) ::LocalLock(h);
_tcsncpy_s(lpszText, cbSize / sizeof(TCHAR), strString, _TRUNCATE);
::LocalUnlock(h);
// Free the current text handle of the edit control.
::LocalFree(m_myEdit.GetHandle());
// Set the new text handle.
m_myEdit.SetHandle(h);
要求
Header: afxwin.h