MFC,有什么方便的方法可以在其成员函数中获取编辑框的内容?

MFC, Is there any handy way to get the contents of an edit box within its member function?

我正在基于 MFC 从 CEdit 继承一个新的 class 来定制一个编辑框。我想在其成员函数中访问其内容(文本)。我想知道是否有任何 handier/safer/faster 方法来读取和写入字符串,而不是调用 public 函数 GetWindowText()?

对于单行编辑控件,获取存储在控件中的文本的唯一方法是调用 GetWindowText (after an optional call to GetWindowTextLength). MFC's CWnd implementation provides two GetWindowText 重载,其中之一引用 CString。通过承担为您管理内存的责任,此重载肯定符合 “方便”“安全” 类别。至于 “快速”,好吧,堆分配本质上是昂贵的;实际副本本身非常快。

多行编辑控件提供额外的 API 来直接访问控件文本在内存中的表示形式。编辑控制消息 EM_GETHANDLE and EM_SETHANDLE allow a client to gain read-only access to the text or change the memory location used by the control to store its text, respectively. They are exposed as the CEdit member functions GetHandle and SetHandle.

两者的 MFC 文档表明它们需要 DS_LOCALEDIT 对话框样式才能工作。虽然在 16 位 Windows 中可能是这种情况,但我认为今天情况并非如此。