C++ 在记事本中获取当前光标位置++;插件

C++ 在记事本中获取当前光标位置++;插件,c++,notepad++,C++,Notepad++,我正在尝试获取光标所在的行号。然而,我并没有找到直接的方法来得到这条线。相反,我尝试获取当前位置,然后使用SCI\u LINEFROMPOSITION将其转换为行 ::SendMessage(nppData._nppHandle,SCI_GETCURRENTPOS,0,(LPARAM)&first); ::SendMessage(nppData._scintillaMainHandle,SCI_GETCURRENTPOS,0,(LPARAM)&second); ::SendMes

我正在尝试获取光标所在的行号。然而,我并没有找到直接的方法来得到这条线。相反,我尝试获取当前位置,然后使用
SCI\u LINEFROMPOSITION
将其转换为行

::SendMessage(nppData._nppHandle,SCI_GETCURRENTPOS,0,(LPARAM)&first);
::SendMessage(nppData._scintillaMainHandle,SCI_GETCURRENTPOS,0,(LPARAM)&second);
::SendMessage(nppData._scintillaSecondHandle,SCI_GETCURRENTPOS,0,(LPARAM)&third);
所有这些调用都不会更改最后一个参数的值。不幸的是,我没有找到
SCI\u GETCURRENTPOS
的示例。我可以在文件中插入文本,以便通过以下方式检出值:

std::wstringstream wss;
wss << "First value read" << first << std::endl;
wss << "Second value read" << second << std::endl;
wss << "Third value read" << third << std::endl;
insertTextIntoCurrentFile(wss.str().c_str());
std::wstringstream wss;

wss我通过搜索记事本和讨论解决了这个问题。 答案是从
SendMessage
读取返回值

要获取闪烁
HWND

int currentEdit;
::SendMessage(nppData._nppHandle, NPPM_GETCURRENTSCINTILLA, 0, (LPARAM)&currentEdit);
HWND curScint = (currentEdit == 0 ) ?
nppData._scintillaMainHandle:nppData._scintillaSecondHandle;
要获取当前光标位置,请执行以下操作:

int cursorPosition = ::SendMessage(curScint,SCI_GETCURRENTPOS,0,0);

下面的答案是你最初的问题和你自己的答案(这就是我找到这个完整解决方案的原因)的结合


下面是一种不调用
SendMessage()
的方法,只需使用–pseudocode即可:

currentLineNumber = editor.SCI_LINEFROMPOSITION(editor.SCI_GETCURRENTPOS())

这对于将代码保持在更高级别或在其他语言(如N++Python脚本插件)中编写脚本非常有用,因为在这些语言中,调用文档化的API很容易,但使用
SendMessage()
方法可能更难。(已测试-有效。)

最好在记事本++论坛主题中搜索/询问插件开发:
currentLineNumber = editor.SCI_LINEFROMPOSITION(editor.SCI_GETCURRENTPOS())