リッチエディットコントロール禁則処理解除

今日はいろいろとエディットコントロールについてわかった。
ちなみに、

  • エディットコントロール:テキストをただ入力(例:メモ帳)
  • リッチエディットコントロール:色・大きさを変えられる(例:ワードパッド)


エディットコントロールでは等幅フォントを指定すると英字、日本語ともに等幅になった。
一方、リッチエディットコントロールでは等幅フォントを指定すると日本語(全角文字)は等幅になるが半角文字は等幅にならない。


ま、和文入力ではアルファベットが出てきても全角で入力するように決めればいいのでこれは解決。


次に、
エディットコントロールは行頭に「、。」などが来てもそのままで禁則処理を行わない。
一方、リッチエディットコントロールは行頭に「、。」が来ると勝手にその前の1字も前に持ってくる(禁則処理を行う)。
つまり、
|あいうえお|
のあとに「、」を入力すると
|あいうえ |
|お、   |
と勝手にずれてしまうのだ。


毎パソの練習ソフトはどうやってるかと思い、チェックしてみると
タイピング中はエディットコントロールを使っているので禁則処理は行われず「、。」も行頭に来ている。そして、採点時には代わりにリッチエディットコントロールを表示して間違った部分の色を変えている。


以前、採点のときに出てきた文章の改行位置なんかが課題文と全然違って焦ったことがあったが、これはリッチエディットコントロールを使っているせいだったのね。
毎パソ練習ソフトと同じ方法を取ることも可能だけど、やはり採点時にも改行位置は正しくあって欲しい。もう少し調査が必要。


しばらく後・・・

PostMessage(m_rich.m_hWnd, EM_SETWORDBREAKPROC, 0,(LPARAM)WordBreakProc);

でメッセージを送ってコールバック関数を登録

int CALLBACK WordBreakProc(LPTSTR lpch, int ichCurrent, int cch, int code){
   return FALSE;
}
で、あっさり禁則処理解除キター⊂(゜∀゜*)
さ、続き続き。