0

我正在通过继承CEdit基于 MFC 的新类来自定义编辑框。我想在它的成员函数中访问它的内容(文本)。我想知道是否有比调用 public 函数更方便/更安全/更快的方式来读写字符串GetWindowText()

4

1 回答 1

1

对于单行编辑控件,获取存储在控件中的文本的唯一方法是调用GetWindowText(在可选调用 之后GetWindowTextLength)。MFC 的CWnd实现提供了两个GetWindowText重载,其中一个引用一个CString. 通过承担为您管理内存的责任,这种重载当然符合“方便”“安全”类别。至于“快”,好吧,堆分配本质上是昂贵的;实际副本本身非常快。

多行编辑控件提供额外的 API 来直接访问控件文本的内存表示。编辑控件消息EM_GETHANDLEEM_SETHANDLE允许客户端分别获得对文本的只读访问权限或更改控件用于存储其文本的内存位置。它们作为CEdit成员函数GetHandleSetHandle.

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

于 2021-12-30T08:43:53.007 回答