リッチテキストボックスのオーナードローについての質問
- 題名: リッチテキストボックスのオーナードローについての質問
- 著者: ナルト
- 日時: 2011/12/03 6:31:28
- ID: 29414
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: リッチテキストボックスのオーナードローについての質問
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2012/01/24 4:38:46
- ID: 29652
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: リッチテキストボックスのオーナードローについての質問
- 著者: ナルト
- 日時: 2012/01/27 5:39:28
- ID: 29693
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.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は”ポスト”されると思うので、このままだと日本語変換などができない
> おそれがあります。
とありますが、この内容を理解できずにおります。
ご存知の方、ご解説よろしくお願い申し上げます。