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 中可能是这种情况,但我认为今天情况并非如此。
我正在基于 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 中可能是这种情况,但我认为今天情况并非如此。