delphi - 如何检测 Notepad++ 插件中文本和选择的更改?

标签 delphi events plugins notepad++

使用Delphi开发Notepad++插件(以NPP的DelphiPluginTemplate为基础),如何创建onSelectionChanged、onChange等事件处理程序?

我想象创建一个这样的函数,然后用 Notepad++ 以某种方式注册它:

procedure onTextChanged(...); stdcall;
begin
  ShowMessage('Text was changed');
end;
...
initialization
RegisterMyNotepadPlusPlusOnChangeEvent(onTextChanged);

最佳答案

Notepad++ 似乎没有向插件公开该信息,但它确实公开了 the underlying Scintilla edit control ,它通过 wm_Notify 消息向其容器窗口提供大量通知。

当选择更改时,通知代码为scn_UpdateUI ,并且 updated 字段将包含 sc_Update_Selection

当文字发生变化时,代码为scn_ModifiedmodificationType 字段将指示修改的内容,它控制哪些其他字段将包含有用的信息。

这些消息被发送到编辑控件的父级,Notepad++ 不一定会公开该父级。它公开了两个 Scintilla 控件的句柄,您可以调用 GetParent找到它通知的窗口。然后你就可以subclass it ,提供您自己的替换窗口过程来处理您感兴趣的通知消息,然后将所有内容转发到子类列表中的下一个窗口过程。

关于delphi - 如何检测 Notepad++ 插件中文本和选择的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371276/

相关文章:

delphi - 从 Excel 导入数据

events - 如何刷新 Eclipse RCP 中的属性 View ?

javascript - 为什么焦点处理程序使用错误的参数执行?

plugins - 配置Webpack,将LESS文件的目录构建成相应的CSS文件

c++ - Kdevelop 5 + kdev-control-flow-graph

ios - 如何在我的 AppDelegate.swift 中向 Workmanager 注册 "specific plug-in"?

algorithm - delphi 字符串数组的归并排序

delphi - 如何将光标类型更改为类似Excel网格光标?

Delphi:对类型 "array of TObject"的参数进行 SetLength()

c# - 将事件写入事件日志期间出现 WCF 异常