2010/10/16 (Sat) 21:26
コンソール版HSP3 (hsp3cl)では cls がサポートされていないため標準では画面消去が行えません。
これでは不便ですので、モジュール+サンプルを作ってみました。
これでは不便ですので、モジュール+サンプルを作ってみました。
#module #define STD_OUTPUT_HANDLE -11 #define SPC 0x20 #define FOREGROUND_RED 0x0004 #define FOREGROUND_GREEN 0x0002 #define FOREGROUND_BLUE 0x0001 #define ATR (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) #define global cl_beep cl_tmp="" : poke cl_tmp,0,0x07 : mes cl_tmp #uselib "kernel32" #cfunc GetStdHandle "GetStdHandle" int #func GetConsoleScreenBufferInfo "GetConsoleScreenBufferInfo" int,int #func SetConsoleCursorPosition "SetConsoleCursorPosition" int,int #func SetConsoleTextAttribute "SetConsoleTextAttribute" int,int #func FillConsoleOutputCharacter "FillConsoleOutputCharacterA" int,int,int,int,int #func FillConsoleOutputAttribute "FillConsoleOutputAttribute" int,int,int,int,int /* typedef struct _CONSOLE_SCREEN_BUFFER_INFO { COORD dwSize; 2+2 COORD dwCursorPosition; 2+2 WORD wAttributes; 2 SMALL_RECT srWindow; 2+2+2+2 COORD dwMaximumWindowSize; 2+2 } CONSOLE_SCREEN_BUFFER_INFO; */ #deffunc cl_cls hOut = GetStdHandle(STD_OUTPUT_HANDLE) dim csbi,6 GetConsoleScreenBufferInfo hOut, varptr(csbi) dwWrite = wpeek(csbi,0)*wpeek(csbi,2) SetConsoleCursorPosition hOut, 0 SetConsoleTextAttribute hOut, ATR FillConsoleOutputCharacter hOut, SPC, dwWrite, 0, 0 FillConsoleOutputAttribute hOut, ATR, dwWrite, 0, 0 return #global #runtime "hsp3cl" repeat 32 mes (32-cnt) loop cl_beep ; ビープを鳴らす cl_cls ; 画面クリア dialog "画面クリアしました" repeat 32 mes cnt loop end
PR
Comment