下のようにしたらとりあえずできました。
WPARAMそのままだとinsertできなかったので質問させていただいたのですが、
なぜ一度tmpを経由すると成功するのでしょうか。
WPARAMはtmpに代入できるのだからwstringと同じではないのでしょうか。
だとしたらそのままinsertできるように思えるのですが、
できない理由を教えてください。

wstring tmp;//とりあえず空のwstringを作って
tmp=wp;//WM_CHARのWPARAMの値をそのまま代入
wstr.insert(pos,tmp);//wstring文字列に挿入