使用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_Modified
,modificationType
字段将指示修改的内容,它控制哪些其他字段将包含有用的信息。
这些消息被发送到编辑控件的父级,Notepad++ 不一定会公开该父级。它公开了两个 Scintilla 控件的句柄,您可以调用 GetParent
找到它通知的窗口。然后你就可以subclass it ,提供您自己的替换窗口过程来处理您感兴趣的通知消息,然后将所有内容转发到子类列表中的下一个窗口过程。
关于delphi - 如何检测 Notepad++ 插件中文本和选择的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371276/