ITextHost::TxNotify 方法 (textserv.h)
通知各种事件的文本宿主。
语法
HRESULT TxNotify(
[in] DWORD iNotify,
[in] void *pv
);
参数
[in] iNotify
类型: DWORD
要通知主机的事件。 EN_通知代码之一。
[in] pv
类型: void*
依赖于 iNotify 的额外数据。
返回值
类型: HRESULT
如果方法成功,则返回S_OK。
如果方法失败,则返回S_FALSE。 有关 COM 错误代码的详细信息,请参阅 COM 中的错误处理。
注解
请注意,事件有两个基本类别: 直接 事件和 延迟 事件。 直接事件会立即发送,因为它们需要一些处理,例如 EN_PROTECTED。 延迟事件在发生所有处理后发送;因此, 控件处于稳定状态。 延迟通知的示例包括 EN_CHANGE、 EN_ERRSPACE和 EN_SELCHANGE。
通知事件与发送到富编辑窗口的父窗口的通知代码相同。 可以使用通过 EM_SETEVENTMASK 消息设置的掩码来控制事件的触发。
一般情况下,在处理此方法时调用文本服务对象是合法的;但是,应提醒实施者避免过度递归。
下面是可能发送的通知的列表。
通知 | 含义 |
---|---|
EN_CHANGE | 当用户执行可能已更改控件中的文本的操作时,在系统更新屏幕后发送。 |
EN_DROPFILES | 在收到 WM_DROPFILES 消息或 IDropTarget::D ragEnter 通知时发送。 |
EN_ERRSPACE | 当控件无法分配足够的内存来满足指定的请求时发送。 |
EN_HSCROLL | 当用户在屏幕更新之前单击控件的水平滚动条时发送。 |
EN_KILLFOCUS | 当控件失去键盘焦点时发送。 |
EN_LINK | 当富编辑控件接收各种消息(如鼠标单击消息)时发送,当鼠标指针位于具有CFE_LINK效果的文本上时发送。 |
EN_MAXTEXT | 当当前文本插入超过控件的最大字符数时发送。 |
EN_OLEOPFAILED | 当用户对 OLE 对象执行的操作失败时发送。 |
EN_PROTECTED | 当用户执行更改受保护文本范围的操作时发送。 |
EN_REQUESTRESIZE | 当富编辑控件的内容与控件的窗口大小不同时发送。 |
EN_SAVECLIPBOARD | 在销毁编辑控件时发送。 文本宿主应指示是否应调用 OleFlushClipboard 。 指示要刷新的字符数和对象数的数据在 ENSAVECLIPBOARD 数据结构中发送。 掩码值不为任何值。 |
EN_SELCHANGE | 在当前所选内容更改时发送。 还会发送 SELCHANGE 数据结构,该结构指示当前所选数据类型的新选择范围。 通过 ENM_SELCHANGE 掩码控制。 |
EN_SETFOCUS | 在编辑控件收到键盘焦点时发送。 不会发送额外的数据;没有掩码。 |
EN_STOPNOUNDO | 当发生控件无法分配足够的内存来维持撤消状态的操作时发送。 如果返回S_FALSE,操作将停止;否则,该操作将继续。 |
EN_UPDATE | 在编辑控件请求重绘已更改的数据或文本之前发送。 不会发送其他数据。 此事件通过 ENM_UPDATE 掩码进行控制。 Rich Edit 2.0 及更高版本: 忽略 ENM_UPDATE 掩码,并始终发送 EN_UPDATE 通知代码。 但是,当 Microsoft Rich Edit 3.0 模拟 Microsoft Rich Edit 1.0 时, ENM_UPDATE 掩码控制此通知。 |
EN_VSCROLL | 当用户单击编辑控件的垂直滚动条或当用户在屏幕更新之前将鼠标滚轮滚动到编辑控件上时发送。 这是通过 ENM_SCROLL 掩码控制的;不会发送额外的数据。 |
注意EN_MSGFILTER不会发送到 TxNotify。 若要筛选窗口消息,请使用 TxSendMessage。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | textserv.h |
DLL | Msftedit.dll |
请参阅
概念性
引用