ソフト改行文字の挿入          <TOP>


SendMessage ウィンドウにメッセージを送信

EM_FMTLINES(&HC8) フト改行文字の設定をオンまたはオフ

 

#define EM_FMTLINES &HC8 は複数行入力ありに設定したエディットボックスにおいて、ソフト改行文字を設定または削除します。
wParam = 1 ソフト改行文字を挿入/wParam = 0 ソフト改行文字を挿入しない。lParam は常に0

例では、F-Basic Version 6.3 Programming Tips の文字列が入れきらない幅のEdit1、および全表示可能な幅のEdit2、Picture1を用意します。

EditBoxは複数行入力あり、垂直スクロールありに設定しています。(Picture1はリソース操作で3D表示にしています)

起動時(通常)Edit1には文字列が入りきらないので2行表示されます。

ソフト改行文字を挿入するをチェックし「実行」をクリックするとEdit1の改行位置を取得しソフト改行文字を挿入してEdit2、Picture1に表示します。

 

 
'================================================================
'= ソフト改行文字の挿入
'=    (EM_FMTLINES.bas)
'================================================================
#include "Windows.bi"

' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

#define EM_FMTLINES &HC8                'ソフト改行文字の設定をオンまたはオフにする

Var Shared Edit(1) As Object
Var Shared Text(2) As Object
Var Shared Radio(1) As Object
Var Shared Picture1 As Object
Var Shared Button1 As Object
Var Shared Group1 As Object

For i = 0 To 2
    If i < 2 Then
        Edit(i).Attach GetDlgItem("Edit" & Trim$(Str$(i + 1))) : Edit(i).SetFontSize 14
        Radio(i).Attach GetDlgItem("Radio" & Trim$(Str$(i + 1))) : Radio(i).SetFontSize 14
    End If
    Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) : Text(i).SetFontSize 14
Next
Picture1.Attach GetDlgItem("Picture1")
Button1.Attach GetDlgItem("button1") : Button1.SetFontSize 14
Group1.Attach GetDlgItem("Group1") : Group1.SetFontSize 14

Var Shared txt As String

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    ShowWindow -1

    txt = "F-Basic Version 6.3 Programming Tips"
    Edit(0).SetWindowText txt
    Edit(1).SetWindowText txt
    Picture1.Cls
    Picture1.Print txt
End Sub

'================================================================
'=
'================================================================
Declare Function Index bdecl () As Integer
Function Index()
    Index = Val(Mid$(GetDlgRadioSelect("Radio1"), 6)) - 1
End Function

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var Ret As Long

    Ret = Api_SendMessage(Edit(0).GethWnd, EM_FMTLINES, CLng(Index), ByVal CLng(0))

    txt = Edit(0).GetWindowText

    Picture1.Cls
    Picture1.Print txt

    Edit(1).SetWindowText txt    
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End