このような形でやってみました。
この方法ですと「メッセージボックスの内容が更新されるたびに割り込みが発生し、
waitやawaitの残り時間がスキップされてしまう」という弊害が起きるので、
それへの対処を一応行っております。
//参考:http://hsp.tv/play/pforum.php?mode=pastwch&num=88098
#include "user32.as"
#include "gdi32.as"
#include "kernel32.as" //Sleepを使うために必要
#include "winmm.as" //TimeGetTimeを使うために必要
#module
#const sleep_time 16 //await2では実際はこれの倍数分の時間だけ待つ。
//不都合があるようなら弄ってみてください。
#deffunc await2 int msec //途中で割り込みが発生しても指定された時間だけきっちり待つawait
TimeGetTime : start=stat
repeat
TimeGetTime : if stat-start>=msec : break
await 0
Sleep sleep_time
loop
return
#global
#define ctype RGB(%1,%2,%3) ( (%1) | ((%2)<<8) | ((%3)<<16) ) //SetTextColorやSetBkColor、CreateSolidBrushで
//指定する色はこの形式を用いる。
//変更後の文字色と背景色を設定
col_text=RGB(0,0,255) //文字の色
col_bk=RGB(255,0,0) //文字の背景色
//ブラシの作成
CreateSolidBrush RGB(255,0,0) //オブジェクトの背景色(文字の背景色とは別の色にすることも可能)
h_brush=stat //ブラシのハンドル
objcolor 255,0,0: color 0,0,255
objmode objmode_usecolor+objmode_usefont
memo="aaaaaaaaaa": pos 0,0: mesbox memo,ginfo_winx,ginfo_winy
h_mbox=objinfo(stat,2) //メッセージボックスのハンドル
onexit *exit
oncmd gosub *ccedit,0x0133 //WM_CTLCOLOREDIT=0x0133
repeat
oncmd cnt\2 //oncmdによる割り込みのON/OFFを切り替える
InvalidateRect h_mbox,0,1 //メッセージボックスの内容を更新
await2 1000 //通常のwaitやawaitだと途中で割り込みが発生すると残り時間がスキップされるので、これを使う。
loop
*ccedit
if lparam=h_mbox {
SetTextColor wparam,col_text
SetBkColor wparam,col_bk
return h_brush
}
return
*exit
DeleteObject h_brush
end