ソフト改行文字が入らず困っています
VB6環境で、テキストボックスにEM_FMTLINES(= &HC8)をSendMessageしソフト改行文字を入れた形でテキストを取得したいのですが、希に複数行入力されているにもかかわらず、ソフト改行文字が追加されない場合があります。
MultiLineをtrueにしたテキストボックス「text1」とボタン「Command1」をフォームに貼り付け、以下のようなテストプログラムを作成してみました。(お見苦しいところありましたらすみません)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_FMTLINES = &HC8 'ソフト改行文字を設定/削除する定数
Private Sub Command1_Click()
Dim ret As Boolean
Dim str As String
ret = True
'ソフト改行文字を付加
Call SendMessage(Text1.hwnd, EM_FMTLINES, 1&, ByVal 0&)
str = Text1.Text
If InStr(str, vbCr & vbCr & vbLf) = 0 Then
MsgBox "失敗!"
ret = False
End If
'ソフト改行文字を削除
Call SendMessage(Text1.hwnd, EM_FMTLINES, 0&, ByVal 0&)
If ret = True Then
MsgBox "成功"
End If
End Sub
テキストボックスの横幅をある程度狭くし、複数行になるよう適当に文字を入力しボタンをクリックすると、ほとんど成功するのですが、確かに20回に1回くらい失敗します。
失敗した際は何度ボタンをクリックしても失敗します。逆に成功した文字列でなんどもボタンをクリックしても成功しか帰ってきません。
試した環境
WindowsXP Pro SP2、Windows2000 SP4
なんとも法則性も見つからず、途方に暮れております。決方法やこんな事象ご存知でしたら助けて頂けないでしょうか。よろしくお願い致します。
お礼
こんな技もあったんですね。どうもありがとうございます。