RADツールでEditBox1という名前のエディットボックスを作成し、
以下のコードを貼り付けてください。
MainWnd.sbp:
 [ここをクリックすると内容が表示されます]
コード: 全て選択
'-----------------------------------------------------------------------------
'  イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim hEdit As Long
Dim LeftMargin As Long
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
	' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
	Select Case dwMsg
		Case WM_CTLCOLOREDIT
			DrawTextLine(lParam)
	End Select
	' イベントプロシージャの呼び出しを行います。
	MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
Sub DrawTextLine(hWnd As HWND)
	Dim hdc As HDC
	Dim hbr As HBRUSH, hOld As HANDLE
	Dim hPen As HPEN, hOldPen As HANDLE
	Dim hOldFont As HANDLE
	Dim rc As RECT
	Dim topLine As Long, cntLine As Long
	Dim pos As DWord
	Dim i As DWord
	Dim str As String
	GetClientRect(hWnd, rc)
	hdc=GetDC(hWnd)
	hPen=CreatePen(PS_SOLID, 1, RGB(240, 240, 240))
	hOldPen=SelectObject(hdc, hPen)
	hbr=CreateSolidBrush(RGB(240, 240, 240))
	hOld=SelectObject(hdc, hbr)
	Rectangle(hdc, rc.left, rc.top, LeftMargin, rc.bottom)
	SelectObject(hdc, hOldPen)
	SelectObject(hdc, hOld)
	DeleteObject(hPen)
	DeleteObject(hbr)
	SendMessage(hWnd, EM_GETRECT, 0, VarPtr(rc))
	rc.left=rc.left-LeftMargin
	rc.right=rc.left+LeftMargin-5
	topLine=SendMessage(hWnd, EM_GETFIRSTVISIBLELINE, 0, 0)
	cntLine=SendMessage(hWnd, EM_GETLINECOUNT, 0, 0)
	hOldFont=SelectObject(hdc, hFont_MainWnd)
	SetTextColor(hdc, RGB(32, 32, 32))
	SetBkColor(hdc, RGB(240, 240, 240))
	For i=topLine To cntLine
		str=Str$(i+1)
		pos=SendMessage(hWnd, EM_LINEINDEX, i, 0)
		pos=SendMessage(hWnd, EM_POSFROMCHAR, pos, 0)
		rc.top=HIWORD(pos)
		If rc.top>=rc.bottom Then Exit For
		DrawText(hdc, StrPtr(str), -1, rc, DT_RIGHT Or DT_TOP Or DT_SINGLELINE Or DT_NOCLIP)
	Next
	SelectObject(hdc, hOldFont)
	ReleaseDC(hWnd, hdc)
End Sub
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
	TextBoxSample_DestroyObjects()
	PostQuitMessage(0)
End Sub
Sub MainWnd_Resize(SizeType As Long, cx As Integer, cy As Integer)
	Dim rc As RECT
	GetClientRect(hMainWnd, rc)
	MoveWindow(hEdit, 0, 0, rc.right, rc.bottom, 0)
	GetClientRect(hEdit, rc)
	'SendMessage(hEdit, EM_GETRECT, 0, VarPtr(rc))
	rc.left=rc.left+LeftMargin+5
	SendMessage(hEdit, EM_SETRECT, 0, VarPtr(rc))
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
	Dim hdc As HDC
	Dim buf[9] As DWord
	hEdit=GetDlgItem(hMainWnd, EditBox1)
	SetFocus(hEdit)
	hdc=GetDC(hEdit)
	GetCharWidth32(hdc, Asc("0"), Asc("9"), buf)
	LeftMargin=buf[0]*4+3
	ReleaseDC(hEdit, hdc)
End Sub