未完成ですが……、
一応こんな感じでできると思います。
半角英数字だけならこれで出来たのですが、全角文字があると失敗します。
#define EM_GETSEL 0x00B0
#define EM_SETSEL 0x00B1
#define EM_SCROLLCARET 0x00B7
// メッセージボックス
pos 0, 0;
text = "";
mesbox text, ginfo_sx, ginfo_sy-30, 1, 65536;
obj1 = stat;
hobj1 = objinfo(obj1, 2);
pos 3, ginfo_sy-28;
mes "検索文字列: ";
// 検索用入力ボックス
pos 100, ginfo_sy-28;
objsize 300, 25;
words = "";
input words,,, 100;
obj2 = stat;
// 検索ボタン
pos 450, ginfo_sy-28;
objsize 40, 25;
button gosub "検索", *serch;
obj3 = stat;
stop;
// 文字列の検索処理
*serch
sendmsg hobj1, EM_GETSEL, varptr(pStart), varptr(pEnd); // 現在のカーソル位置取得
// 検索文字列が何もない場合
if(words = "") {
dialog "検索文字列に何も入力されていません。", 1, "エラー";
return;
}
idx = instr(text, pEnd, words); // 現在のカーソル位置(末尾)から後ろを検索
if(idx == -1) {
// 文字列が見つからなかった場合
dialog "文字列が見つかりませんでした。", 0, "検索終了";
return;
}
else {
// 文字列を見つけた場合
pStart = pEnd + idx;
pEnd = pStart + strlen(words);
objsel obj1;
sendmsg hobj1, EM_SETSEL, pStart, pEnd; // カーソル位置を見つけた文字列の箇所に設定する
sendmsg hobj1, EM_SCROLLCARET, 0, 0; // カーソル位置を表示するようににスクロール
}
return;