>>362
自己解決しました。
mchar* p=tw;
のところ、
mchar* p=gettopbuff(tw);
が正解ですね。

4バイトほどアドレスがずれるみたいで、HTEXTというのは単純な文字変数ではないんだなあ、と。