さて! いい加減、進展しろよなーと言う事はひたすら聞こえない振りだけど まぁ、実際には全然時間を取ってないんで……1回分の書き込みで約2時間分程度の作業だからね。試行錯誤で時間が過ぎてるのだ。
その試行錯誤のお陰で、何が問題なのかが全容を把握できつつある。何処で何をするべきか……がである。
ここで問題となるのは、クリップボードからのペーストだ。この時には複数行からなるテキストを挿入できたりするが、OnChangeイベントでは何処から何処までが挿入された文章なのか判定できない。ペーストの命令時にクリップボードの内容を解析して何文字分のテキストなのか調べられるので、そこから逆算するしかない。
要するに……だ。編集前と編集後のカーソルの位置を記録しておいて、ことある毎に関わる部分の書式を再構成するしかないのである。はっきり言って、力仕事だ。特定の範囲内の色を変えるにしても一々選択してSelAttrivutesであるから……大量にペーストするとベラボーな時間を浪費し、のっぴきならない効率ダウンを招くだろう。
しかし、そうでなければ、再構成のためにあちこちのハンドラに各ハンドラ特有の処理を記述しなければならなくなり、なおかつ多彩な入力パターンに細かく対処した複雑な記述を要求されてしまうだろう。
例えば、「<」や「>」の上にカーソルを置いてDeleteを押下した時と上書きモードでか消えた時とでは、動作が似ていても処理が違ってくる。Deleteキーに他は固有の処理で良いとしても、単なる上書きでは何が押されても発動するイベントハンドラでは厄介な事になるからだ。F1キーを押そうとGキーを押そうと同じハンドラが呼ばれてしまう。大した事ではないのに大袈裟な処理は書きたくない。