マージンの設定と解除          <TOP>


エディットボックス内の文字列をマージンを設定して表示します。

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

 

例では、レフトマージンおよびライトマージンを入力し、表示状態を確認しています。

 

'================================================================
'= マージンの設定と解除
'=    (EM_SETMARGINS.bas)
'================================================================
#include "Windows.bi"

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

#define EM_SETMARGINS &HD3              '左右マージンの設定
#define EC_LEFTMARGIN 1                 '左マージンの設定
#define EC_RIGHTMARGIN 2                '右マージンの設定

Var Shared Edit(2) As Object
Var Shared Text(1) As Object
Var Shared Button(1) As Object

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

Var Shared txt As String

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    txt = "F-BASICはWindows(R)環境で「DOS BASIC資産」を活用できます。操作性、拡張性、そして高速処理 すべてに優れ、充実した移行支援機能も搭載しています。"
    Edit(0).SetWindowText txt
End Sub

'================================================================
'= マージン設定
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var LeftMargin As Integer
    Var RightMargin As Integer
    Var Margin As Long
    Var Ret As Long

    LeftMargin = Val(Edit(1).GetWindowText)
    RightMargin = Val(Edit(2).GetWindowText)
    Margin = RightMargin * 16 ^ 4 + LeftMargin    'Margin = (RightMargin * &H10000) Or LeftMargin

    Ret = Api_SendMessage(Edit(0).GethWnd, EM_SETMARGINS, EC_LEFTMARGIN Or EC_RIGHTMARGIN, Margin)

    Edit(0).SetWindowText txt
End Sub

'================================================================
'= マージン解除
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Ret As Long

    Ret = Api_SendMessage(Edit(0).GethWnd, EM_SETMARGINS, EC_LEFTMARGIN Or EC_RIGHTMARGIN, 0)

    Edit(0).SetWindowText txt
End Sub

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