少し難しいですが、リッチエディットコントロールでも文字の書式などを設定することが出来ます。
こちらは Footy2 の SDK を ダウンロードしなくても使えます。
#include "user32.as"
#include "kernel32.as"
// エファクトの定数
#const CFM_FACE $20000000
#const CFM_BOLD $00000001 ; CFE_BOLD
#const CFM_ITALIC $00000002 ; CFE_ITALIC
#const CFM_UNDERLINE $00000004 ; CFE_UNDERLINE
#const CFE_BOLD $00000001 ; 太字体で表示されます。
#const CFE_ITALIC $00000002 ; イタリック体で表示されます。
#const CFE_UNDERLINE $00000004 ; アンダーラインを引きます。
#const CFM_COLOR $40000000 ; crTextColorメンバとdwEffectsメンバのCFE_AUTOCOLOR値が有効
#const SCF_SELECTION $00000001 ;
#const style 0x50b00004 /*WS_CHILD|WS_VISIBLE|WS_BORDER|WS_VSCROLL|WS_HSCROLL|ES_MULTILINE*/
onexit*exit
// libraryを動的ロード
LoadLibrary "RICHED20.DLL"
plib = stat
// 色操作
objsize 80,20
tx="赤","緑","青"
repeat 3
button tx.cnt,*col
loop
// エファクト操作
tx = "太字","斜体","下線"
effvalM = CFM_BOLD,CFM_ITALIC,CFM_UNDERLINE
effvalE = CFE_BOLD,CFM_ITALIC,CFM_UNDERLINE
pos ,ginfo_cy+5
teff=stat+1
repeat 3
button tx.cnt,*eff
loop
// フォント操作
fontface = msGothic,msmincho,"メイリオ"
pos ,ginfo_cy+5
tface=stat+1
repeat 3
button fontface.cnt,*fon
loop
// clear
pos ,ginfo_cy+5:button "clear",*clr
// リッチエディット作成
pos 80,0
winobj "RichEdit20A","リッチエディットコントロール、書式切替テスト",0,style,ginfo_winx-80,ginfo_winy
hwnd_re = objinfo_hwnd(stat)
gsel 0,1
Setfocus hwnd_re
dim cf2,21 // CHARFORMAT2構造体
stop
*col
// CHARFORMAT2構造体 の 5 番目の配列に テキストの色を 0xBBGGRR で代入
cf2 = 84,CFM_COLOR,0,0,0, 0xFF<<(stat*8)
goto *setcharformat
*fon
// CHARFORMAT2構造体 の 26byte 目に フォント名を poke か memcpyで代入
cf2 = 84,CFM_FACE
poke cf2 , 26 , fontface(stat-tface)
goto *setcharformat
*eff
// CHARFORMAT2構造体 の 1 番目に 上書きされるエファクト情報のマスク
// 2番目に ソレが有効に成るか無効に成るかを代入
p=(stat-teff)
cf2 = 84,effvalM.p,effvalE.p
goto *setcharformat
*clr
// おまけ
// 色と、エファクトをクリア。
cf2 = 84,CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE,0,0,0,0
*setcharformat // 選択されている位置に現在のフォーマットを設定する。
sendmsg hwnd_re,0x444 /*EM_SETCHARFORMAT*/,SCF_WORD|SCF_SELECTION,varptr(cf2)
SetFocus hwnd_re
stop
*exit
DestroyWindow hwnd_re // エラーを回避するためには、ウィンドウを削除したのちに
FreeLibrary plib // freelibraryを実行して 動的確保されたlibraryのポインタを指定する。そうしなければ、ウィンドウを閉じる事が出来ずにエラーの原因になる。
end
stop