どうすれば良いか適当に解説
エディットコントロールにある文字の長さ=length1
追記する文字列の長さ=length2
エディットコントロールの限界値=limit
とします
length1+length2>limitであれば容量を超えてしまって追記できないので
エディットコントロールの内容を確保しておいたバッファ(大きさはlength1+length2+1)に取得
このバッファにlstrcatで追記する文字列を連結
このままWM_SETTEXTでバッファのアドレスを指定するとlength1+length2-limit Byteはみ出してしまうので
SendMessage(エディットコントロールのハンドル,WM_SETTEXT,バッファのアドレス+length1+length2-limit,0)
のように書き込み始めるアドレスをずらす
最後にカーソルを最後尾に持っていく
これでできるはず
とまあここまで書いておいて何なんですが、こんなもん書かなくていいと思う
せっかく人がやる気になってんのにこんなどうでもいい所で不毛なコード書かざるを得なくなるとテンションが下がるしね
(個人的にはこれがABが流行らない根本的な理由だと思ってる)
話が逸れました
プロジェクトに↓を加えて下さい
http://www.2chab.net/uploader/src/up0009.sbp
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
の位置に
Dim pclw As *CLogWindow
を記述
メインウィンドウのCreateイベント内に
pclw = New CLogWindow(GetDlgItem(hMainWnd,エディツトコントロールのID))
を記述
メインウィンドウのDestroyイベント内に
Delete pclw
を記述
後は普通のエディットコントロールと同じように使えるはずです。
上限の設定は
SendMessage(エディットコントロールのハンドル,EM_SETLIMITTEXT,上限サイズ,0)
でできます
デフォルトは32KByte=32*1024Byteです