DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リッチテキストボックスのオーナードローについての質問

環境/言語:[VB2008]
分類:[.NET]

2011/12/03(Sat) 08:09:50 編集(投稿者)

こんにちは。
リッチテキストボックスの改行位置に改行マークを表示させたくて、オーナードローをしたいと思っています。
しかし、リッチテキストボックスにはPaintイベント等が使えず、色々と調べたところ、
WndProcでWM_PAINTを検出したタイミングで描画を行えばいいことが分かりました。
ちょうど、過去ログにこの方法について投稿がありました(しかも、投稿内容も、改行マークのオーナードローについてでした)。

http://dobon.net/vb/bbs/log3-11/6224.html

ただし、ここにも記載の通り、WM_PAINTの検出だけでは日本語入力がうまくいかず(現象としては、入力した文字がそのまま確定してしまう)、
IME変換中はオーナードローを行わないようにする必要があるとのことです。
とりあえず、ここに記載の通り、WndProcでWM_IME_STARTCOMPOSITIONしてからWM_IME_ENDCOMPOSITIONを受信するまでは
オーナードローを行わないようにすれば日本語の入力も可能ですが、日本語入力時、IME変換中はオーナードローが出来ないので、
その行の改行マークが消えてしまいます。

ここで質問なのですが、なぜIME変換時にオーナードローを行おうとすると、日本語入力が出来なくなるのでしょうか?
上記サイトには、その理由として

> 確かWM_PAINTは”ポスト”されると思うので、このままだと日本語変換などができない
> おそれがあります。

とありますが、この内容を理解できずにおります。

ご存知の方、ご解説よろしくお願い申し上げます。
今更で申し訳ありません。

http://dobon.net/vb/bbs/log3-11/6224.html

の続きが

テキストボックス内の改行位置について-続き
http://dobon.net/vb/bbs/log3-11/6469.html

にあります。ここに添付されていたファイルも残っています。

参考になるといいのですが。
こんにちは。
久しぶりに見に来たら、コメントがあり、うれしいです。
記事を教えて頂きありがとうございました。
内容を確認させて頂きます。
また分からないことがありましたら質問させて頂きます。

DOBON.NET | プログラミング道 | プログラミング掲示板