すみません訂正します。
APIを使えば同じようなことができました。
参考URL
https://support.microsoft.com/ja-jp/help/181934/how-to-create-a-timed-message-box
ほぼそのまま流用しただけのやっつけ仕事なんで不要っぽいものもいくつかありますが、
一応動作確認はできました。
#include "user32.as"
#module MBTimer
#define NULL 0
#define TRUE 1
#define FALSE 0
#define WM_CLOSE 0x0010
#define WM_QUIT 0x0012
#define WM_TIMER 0x0113
#define PM_REMOVE 0x0001
#define GW_HWNDPREV 3
#define GW_ENABLEDPOPUP 6
*CALLBACKTimer
g_bTimedOut = TRUE;
if(g_hWndTimedOwner): EnableWindow g_hWndTimedOwner, TRUE;
GetWindow hWnd, GW_ENABLEDPOPUP;
dhWnd = stat;
PostMessage dhWnd, WM_CLOSE, 0, 0;
return;
#deffunc dialogTimer str sText, int sStyle, str sTitle, int sTime
oncmd gosub *CALLBACKTimer, WM_TIMER;
oncmd 0;
if( sTime > 0 ) {
TimerID = 1;
g_bTimedOut = FALSE;
g_hWndTimedOwner = NULL;
hWndOwner = hWnd;
IsWindowEnabled NULL;
fhWndOwner = stat;
if( hWndOwner && fhWndOwner): g_hWndTimedOwner = hWndOwner;
oncmd 1;
SetTimer hWnd, TimerID, sTime, 0;
}
dialog sText, sStyle, sTitle;
iResult = stat;
if( sTime > 0 ) {
oncmd 0;
KillTimer hWnd, TimerID;
if(g_bTimedOut) {
PeekMessage varptr(msg), dhWnd, WM_CLOSE, WM_CLOSE, PM_REMOVE;
iResult = -1;
}
}
return iResult;
#global
dialogTimer "3秒で閉じる", 0, "テスト1", 3000;
stop
標準のdialogを呼び出し、タイマー割り込みが入ったらダイアログのみを閉じます。
dialog命令と同じ仕様で、末尾にミリ秒単位で時間を設定し
その時間が経過するとダイアログを閉じます。
時間に0やマイナス値を設定すると通常のdialog命令と同じになります。
参考URLのPostQuitMessageの箇所は、
HSPだとダイアログだけでなくメインウィンドウまで終了してしまって、
終了時割り込みを入れても無駄だったので、
ダイアログのウィンドウハンドルを取得し、ダイアログにクローズメッセージを送ることで
代用しました。
これを使う場合、なんらかの不具合があるかもしれませんがご了承ください。
改変等はご自由にどうぞ。