Raymond Chen 2007年09月11日
EM_UNDO 和 WM_UNDO 有什么区别?
译注
这应该算是 Raymond Chen 的一篇水文,正如他所说 “今天的猜测工作:
EM_UNDO
和WM_UNDO
的历史。”
Daniel Chait想知道为什么我们既有EM_UNDO
又有WM_UNDO
。你知道,我也在想同样的问题。但我打算做一个有根据的猜测。 实际上,我写的大部分内容都只是有根据的猜测。就像我解释为什么GetWindowText
有如此复杂的规则?一个猜测。为什么地址空间粒度是64KB?一个猜测。为什么大多数EM_*
消息位于系统消息范围内?一个猜测。当然,这是逻辑上的猜测,通常强烈地遵循着“想象如果这是可能的”这一原则。 今天的猜测工作:EM_UNDO
和WM_UNDO
的历史。 显然,EM_UNDO
是先出现的。毕竟,如果已经存在了一个WM_UNDO
,为什么还需要一个EM_UNDO
消息呢? 在某个时候,有人决定,“嘿,这听起来像是人们可能更普遍想要做的事情。” 新增了消息WM_CUT
、WM_COPY
、WM_PASTE
、WM_CLEAR
和WM_UNDO
,第一个实现它们的控件是编辑控件。
因此,对于编辑控件来说,问题的答案是没有区别。 窗口管理器不为这些新消息提供默认实现。(显然,因为窗口管理器不是通灵的。)如果你想让你的控件支持这些操作,你必须自己响应这些消息。