一般のほうでGetSelectedStringについて尋ねたのですが、いただいた返答によりますと「SelectedString」なのに「検索ダイアログに取り込まれる文字列」を返すようなので、複数行選択されていても二行目以降の取得ができない様子。
なので、「選択文字列」を返すように書き換えてみました。
//CWSH.cppの"case F_GETSELECTED:"以下の部分を修正
if(Result != NULL)
{
if(View->IsTextSelected())
{
CMemory cMem;
if(!View->GetSelectedData(cMem, FALSE, NULL, FALSE, FALSE)) break; //??
int Length = cMem.GetLength();
wchar_t *buf = new wchar_t[Length + 1];
buf[MultiByteToWideChar(CP_ACP, 0, cMem.GetPtr(), Length, buf, Length)] = 0;
Result->vt = VT_BSTR;
Result->bstrVal = SysAllocString(buf);
delete[] buf;
}
else
{
Result->vt = VT_BSTR;
Result->bstrVal = SysAllocString(L"");
}
}
break;
//テスト
var s = Editor.GetSelectedString(0);
Editor.InsText("<code>" + s + "</code>");
…何も考えずにごそっと入れ換えてますが、「検索ダイアログに取り込まれる文字列」に理由があったらどうしよう(-_-;