一般のほうで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>");
…何も考えずにごそっと入れ換えてますが、「検索ダイアログに取り込まれる文字列」に理由があったらどうしよう(-_-;