開発中 (OTW5.0) ボタンもテキストボックスもみんなウィンドウ 定数は基本的に関数を使って取得する
Windowのコントロールを取得
新しいコントロールを作る
既存のコントロール(Windowなど)を継承 ExtendControlされた後親コントロールのイベントハンドラや暗黙ハンドラ状態の変更をしてもすでに作成された子コントロールには及ばない
コントロールが正常かを確認
コントロールを削除
文字列を使ってコントロールを取得
CTLコントロールとPARENTコントロールが継承関係にあるかどうか
コントロールの名前を取得
暗黙ハンドラ状態の設定 IMPLI=TRUEの時にCTLが継承された場合TYPEのイベントハンドラはCallBaseControlHandlerを呼ばなくても勝手に呼ばれるようになる その場合CallBaseControlHandlerを呼んでも親イベントハンドラは呼ばれない IMPLI=FALSEの時既定の挙動
Handlerの書式 COMMONは付ける
COMMON DEF XXX WND,CTL,TYPE,A1,A2
関数 | 説明 | 引数1 | 引数2 |
---|---|---|---|
SetControlPainter(CTL,HANDLER$) |
コントロールの描画イベントを処理する関数の登録 | 描画範囲XY | 描画範囲WH(XY=0&&WH=0のとき全体) |
SetControlLMouseUpHandler(CTL,HANDLER$) |
左クリック(ボタンから離されたとき)のイベントを処理する関数の登録 | X | Y |
SetControlLMouseDownHandler(CTL,HANDLER$) |
左クリック(ボタンが押されたとき)のイベントを処理する関数の登録 | X | Y |
SetControlMouseMoveHandler(CTL,HANDLER$) |
マウスが移動したときのイベントを処理する関数の登録 | XY | マウスの状態 |
SetControlNotificationHandler(CTL,HANDLER$) |
通知(ボタンがクリックされた、Enterが押された)など | ||
SetControlNotifHandler(CTL,HANDLER$) |
=SetControlNotificationHandler | ||
SetControlKeyHandler(CTL,HANDLER$) |
キーが押されたとき | BUTTON()から特殊キーを覗いた値 | |
SetControlChFocusHandler(CTL,HANDLER$) |
フォーカスが変わった時 | フォーカスが移ったらTRUE | WND |
SetControlButtonHandler(CTL,HANDLER$) |
ボタンが押されたとき | ||
SetControlCreateHandler(CTL,HANDLER$) |
ウィンドウが作られたとき | ||
SetControlStrNotifHandler(CTL,HANDLER$) |
文字列の通知(FileDialog等) | ||
SetControlDeleteHandler(CTL,HANDLER$) |
ウィンドウが削除されたとき | ||
SetControlLDoubleClickHandler(CTL,HANDLER$) |
左ダブルクリックをされたとき | ||
SetControlMouseLeaveHandler(CTL,HANDLER$) |
マウスが離れた時 | ||
SetControlResizeHandler(CTL,HANDLER$) |
ウィンドウがリサイズされたとき | WH | |
SetControlFrameHandler(CTL,HANDLER$) |
ウィンドウフレーム周りのなんか | ||
SetControlFramePainter(CTL,HANDLER$) |
ウィンドウフレームの描画 | ||
SetControlChildWindowHandler(CTL,HANDLER$) |
子ウィンドウから送られてくるイベントを受信 | type | arg |
SetControlParentWindowHandler(CTL,HANDLER$) |
親ウィンドウから送られてくるイベントを受信 | type | arg |
SetControlQueryFrameHandler(CTL,HANDLER$) |
ウィンドウのフレームの大きさを返す | STYLE | 0 |
SetControlContextMenuHandler(CTL,HANDLER$) |
コンテキストメニューを表示する必要があるとき | 表示すべきX | Y |
SetControlChInputHandler(CTL,HANDLER$) |
入力ウィンドウが変わったとき | 入力が移ったらTRUE | WND |
SetControlWheelHandler(CTL,HANDLER$) |
マウスホイールが回されたとき | 変位 |
A2$が文字列
COMMON DEF XXX WND,CTL,TYPE,A1,A2$
END
WNDは0の場合があるので注意
COMMON DEF XXX WND,CTL,TYPE,STYLE,ZERO OUT W1,H1,W2,H2
END
子ウィンドウに何か起こった時に呼ばれる A1がtype
ウィンドウが最大化されようとしたときに送られる(OTW30からWND自身の最大化イベントが送られてくるようになった)
argに対象ウィンドウ
rootウィンドウ
ウィンドウが最小化されようとしたときに送られる(OTW30からWND自身の最大化イベントも送られてくるようになった)
argに対象ウィンドウ
ウィンドウがアクティブになったときに送られる argに対象ウィンドウ
ウィンドウが非アクティブになったときに送られる argに対象ウィンドウ
ウィンドウが最小化最大化から戻されようとしたときに送られる(OTW30からWND自身の最大化イベントが送られてくるようになった)
argに対象ウィンドウ
入力ウィンドウになった時に送られる argに対象ウィンドウ
入力ウィンドウではなくなった時に送られる argに対象ウィンドウ
親ウィンドウに何か起こったときに呼ばれる A1がtype
ウィンドウがリサイズされたときに呼ばれる
???
???
A1をWheelDelta()で割ると回された回数
負の時下へのスクロールを表す
常に120を返す
10
0b00
bit 0CTL_LBTNFLG
bit 1CTL_RBTNFLG
1なら左クリック,2なら右クリック,3なら両方
IF BTN AND GetControlStateLBtn()THEN ~左クリック
IF BTN AND GetControlStateRBtn()THEN ~右クリック
ルートウィンドウを取得
ウィンドウが正常ならTRUE
ウィンドウを作成する 内部ではFocusWindow(WND)が呼ばれる もしWindowNeverActiveStyle()が親ウィンドウに設定されている場合STYLE引数に関わらずWindowNeverActiveStyle()が設定される
コントロールと名前と座標とサイズと親ウィンドウとフラグを使ってウィンドウを作成
コントロールと名前とサイズを使ってウィンドウを作成
引数を使ってスタイル指定されたウィンドウ作成
スタイル指定されたウィンドウ作成
引数を使ってスタイル指定されたトップレベルウィンドウ作成
スタイル指定されたトップレベルウィンドウ作成
ウィンドウを手前に持ってくる
ウィンドウを指定座標に持っていく
ウィンドウをリサイズ
ウィンドウを移動してリサイズ
ウィンドウへイベントを送信
ウィンドウへ再描画イベントを送信
ウィンドウのフレーム部分への再描画イベントを送信
(イベントのハンドラーで)親ハンドラを呼び出し TYPEでイベントの種類を識別する
COMMON DEF EventHandler WND,CTL,TYPE,A1,A2
VAR ERROR=CallBaseControlHandler(WND,CTL,TYPE,A1,A2)
END
ウィンドウのイベントキューの先頭を削除せずに帰す
ウィンドウのイベントを処理
ウィンドウの名前を取得
ウィンドウの幅を取得
ウィンドウの高さを取得
ウィンドウの大きさを取得 FRM=TRUEの時フレームの大きさを含んでいる
バージョンを取得(“5.0”など)
ウィンドウのX座標を取得
ウィンドウのY座標を取得
次のウィンドウ(前面)を取得,失敗したら0が返る
次のウィンドウ(後面)を取得,失敗したら0が返る
親ウィンドウを取得
子ウィンドウを取得(一番後ろ)
ウィンドウのコントロールを取得
ウィンドウがフォーカスされていればTRUE
ウィンドウがアクティブであればTRUE
非表示ウィンドウを表示させる
ウィンドウを非表示にする
ウィンドウの最小サイズを取得(リサイズ用)
ウィンドウの最小サイズを設定(リサイズ用)
WNDに対してマウスキャプチャを開始,MouseMoveイベントが全てWNDに対して送られるようになる。但しマウスをクリックすると解除.返り値は前にキャプチャされたウィンドウ
現在マウスキャプチャされているウィンドウを取得
WNDに対してのマウスキャプチャを終了,失敗すると0、成功すると1が返る
FRM=TRUEの時ウィンドウフレームに対してキャプチャ
FRM=TRUEの時ウィンドウフレームに対してキャプチャ
実装依存のプロパティ設定、OTW5.0-28では”SHADOW”を指定すると影の有無を切り替えられる
BASEWNDに対するWNDの位置を取得
BASEWNDに対するWNDの位置を取得
現在のアクティブウィンドウを取得
子ウィンドウ孫ウィンドウがアクティブならばTRUE
ウィンドウを最大化
ウィンドウを最小化
ウィンドウを最大最小化から復元
ウィンドウスタイルを取得
ウィンドウフレームサイズを取得
ウィンドウフレームサイズを計算 GetWindowFrameSizeは実際の大きさを返すのに対しこの関数は計算をする
WNDの子ウィンドウからCTLコントロールに一致するウィンドウを取得、EXTEND=TRUEの時IsControlExtendで判定(再帰的に探索しない)
WNDからのマウスの相対座標を取得
WNDからのマウスの相対座標を取得
WindowGroupOwnerがあればそれを、無ければParentWindowを返す
ウィンドウをクリッピングしない、ウィンドウが重ならない時にこれを指定すると効率化する
ウィンドウをクリッピングさせる
SPVARのようなWND固有の記憶域(0<=I<=7)
SPVARのようなWND固有の記憶域
CHILDの親ウィンドウにPARENTがあればTRUE(親ウィンドウが辿れなくなるまで調べる)
PARENTの子ウィンドウにCHILDウィンドウが含まれていればTRUE(再帰的に探索する)
マウスの下にWNDがあるときに表示するマウスカーソル画像を設定
マウスの下にWNDがあるときに表示するマウスカーソル画像を取得
WNDに属するシステムメニューをWNDの相対座標X,Yに表示 システムメニューとは最大最小化復元閉じるなどの操作をするメニュー
WNDにフォーカスを設定する WNDをActiveWindowに設定する これで設定したウィンドウにはGetActiveWindow()で取得できる ウィンドウをクリックしたとき自動的にOTWがそのウィンドウに対しFocusWindowを呼び出す 内部ではSetInputWindow(WND)も呼ばれる もしWindowNeverActiveStyle()が設定されている場合SetInputWindow(WND)と等価 ChFocusイベント、ParentWindowイベント(WindowGroupActiveEvent()、WindowGroupInactiveEvent())、ChildWindowイベント(WindowActiveEvent()が呼ばれる ウィンドウが入力無効な時あるいはCheckWindow(WND)がFALSEの時エラーが返る
WNDをInputWindowに設定する これで設定したウィンドウにはGetInputWindow()で取得できる ChInputイベント、ChildWindowイベント(WindowInputEvent()、WindowLostInputEvent())が呼ばれる ウィンドウが入力無効な時あるいはCheckWindow(WND)がFALSEの時エラーが返る
入力ウィンドウを取得する
InputWindowはキー入力などを受け付けるウィンドウ ActiveWindowはアクティブであるという状態を示す WindowNeverActiveStyle()を使わない限り区別は無い WindowNeverActiveStyle()が使われている例としてはPopupMenu、DropDownListBoxがあり、ウィンドウのフォーカスを失うことなくメニューやリストボックスを表示させている
ウィンドウを入力有効にする
ウィンドウを入力無効にする アクティブにすることができなくなり入力イベントが送信されなくなる
WNDが入力有効な時TRUEが返る 親ウィンドウを辿っていきWindowDisabledStyle()が設定されているウィンドウがあればFALSEが返る
ウィンドウの描画形式を変更する
返り値はERR
RGBのみで透明度は無い形式(規定)
RGBと透明かどうかのみを表せる形式
ウィンドウ合成が有効になっていない時にこれを指定すると#WIN_ERR_NOTSUPPORTEDが返ってくる
RGBと透明度がある形式
大きいウィンドウにこれを適用するとパフォーマンスが低下するので注意
ウィンドウ合成が有効になっていない時にこれを指定すると#WIN_ERR_NOTSUPPORTEDが返ってくる
NewWindowで指定するフラグ, ウィンドウを後ろに配置する
NewWindowで指定するフラグ, ウィンドウを前に配置する
NewWindowで指定するフラグ, ウィンドウを非表示にする
NewWindowで指定するフラグ, ウィンドウを常にOwner windowより前に表示にする
Windowの位置をお任せにする
Window Flagは作成時の状態を表すのに対しWindow Styleは恒久的な状態を表す(WindowToolFlag()WindowHideFlag()は非推奨)
メニュー付きにさせるフラグ
リサイズ可能にさせるフラグ
非表示にさせるフラグ
タイトルバーの幅を小さくさせるフラグ
常に最前面に表示させるフラグ
ウィンドウがアクティブになることがないフラグ ただしInputWindowには設定される
最大化状態であることを表すフラグ
最小化状態であることを表すフラグ
閉じるボタンを無効化
最大化ボタンを無効化
最小化ボタンを無効化
ウィンドウを無効化 DisableWindow(WND)参照
WindowVarは軽量だがキーと値が整数のみで利用しづらい場面がある
ウィンドウプロパティに値を設定(文字列をキーとして整数実数文字列を格納できる)
ウィンドウプロパティに値を設定(前の値が返る)
ウィンドウプロパティの値を取得(SetPropされていないNAME$であった場合暗黙的に(0,”“,0.0)が#SetPropされる)
ウィンドウプロパティの値を取得(SetPropされていないNAME$であった場合SetPropされずV=0 F=FALSE)
文字列版
文字列版
文字列版
文字列版
実数版
実数版
実数版
実数版
WNDがNAME$のプロパティを持っていればTRUE
ウィンドウプロパティを削除
作業領域(画面からタスクバーなどが除かれた領域)を設定
作業領域(画面からタスクバーなどが除かれた領域)を取得 特に設定されていなければX=0,Y=0,W=GetWindowWidth(WND),H=GetWindowHeight(WND)を返す
"WRKAREAXY"
上位ワードにX下位ワードにY
"WRKAREAWH"
上位ワードにwidth下位ワードにheight
"NEWWINXY"
ウィンドウのX座標Y座標を指定せずにNewWindowしたときに指定される座標
上位ワードにX下位ワードにY
ウィンドウの背景色を設定
ウィンドウの背景色を取得
ウィンドウのデフォルト背景色を取得
選択時の背景色を取得
選択時のテキスト色を取得
作業領域背景色を取得
WNDに対してTIMEOUT ms後に実行するFUNC$を設定する
COMMON DEF TIMERFUNC WND,TIMER,ARG
END
TIMERを削除する
TIMERが正常ならTRUE
描画開始を明示的に宣言する
描画開始を明示的に宣言する(ウィンドウの枠に対しても負座標で描画可能)
描画終了を明示的に宣言する(GEndWindowEx(WND,TRUE)と等価)
描画終了を明示的に宣言する(CWCF=TRUEの時子ウィンドウのクリッピング処理を実行)
描画の始点を変更(デフォルトで左上(0,0))
ウィンドウに点を書く
コンソールの色を取得
コンソール色で文字を表示
背景色を指定してGPRINT
サイズ(SX:SY)を指定してGPUTCHR
サイズ(S:S)を指定してGPUTCHR
背景色を指定してGPUTCHR
画像をウィンドウに描画
画像をパレットPALを用いてウィンドウに描画
WNDのGCLIP指定を初期化する
WNDがGBeginしていなければFALSEが返る (GBeginFrameWindowしたとき2、GBeginWindowしたとき1が返る)
ボタンの枠を描画(PUSHF=TRUEの時押下状態) 中身の部分にGCLIPWindowとSetWindowDrawPosされる
DrawButton WND,0,0,20,10,FALSE
GPRINTWindow WND,1,1,"HOGE",#BLACK
ウィンドウを表示するコントロール
ボタンを表示するコントロール
トグルボタンを表示するコントロール
テキストボックスを表示するコントロール
文字を表示するコントロール
文字を中央
文字を左寄せ(デフォルト)
文字を右寄せ
VAR TESTOTWCTL,TESTOTWWND
DEF I_TEST
IF!CHKCALL("IsWinRunning")||!IsWinRunning()THEN'OTWが存在するか、存在した場合動いているか
ExitProcess 1
RETURN
ENDIF
VAR E
ExtendControl "TEST",GetWindowControl() OUT TESTOTWCTL,E'Windowコントロールを継承する
IF E THEN ExitProcess 1RETURN
E=SetControlPainter(TESTOTWCTL,"TESTOTWPainter")
NewTopLevelWindow TESTOTWCTL,"TEST",64,64 OUT TESTOTWWND,E
IF E THEN ExitProcess 1
END
DEF TESTOTWPainter WND,CTL,T,A1,A2
VAR E=CallBaseControlHandler(WND,CTL,T,A1,A2)'親のハンドラを呼び出す(これを呼ばないと枠が描画されない)
IF E THEN RETURN
E=GBeginWindow(WND)
IF E THEN RETURN
GFILLWindow WND,0,0,64,64,RGB(0,0,0)
GPRINTWindow WND,0,0,"HELLO",RGB(255,255,255)
E=GEndWindow(WND)
END
DEF L_TEST
IF UpdateWindow(TESTOTWWND)THEN ExitProcess 1'ウィンドウが閉じられたりした
END
これらのコントロールを継承する際は親コントロールのHandlerを呼び出す必要がある
event | 説明 |
---|---|
Paint | 枠を描画 |
ChFocus | 前面に移動 |
event | 説明 |
---|---|
Paint | ボタンを描画 |
LMouseUp | 親ウィンドウにNotifを送信 |
ボタンの文字を左寄りにする
ボタンの文字を右寄りにする
ボタンの文字を中央に配置する
トグルボタンがチェックされているか
トグルボタンのチェックを外す
トグルボタンをチェックさせる
縦スクロールバーコントロールを取得
横スクロールバーコントロールを取得
縦スクロールバーをPARENTに長さSIZで作成(ScrollBarAutoResizeModeは1)
横スクロールバーをPARENTに長さSIZで作成(ScrollBarAutoResizeModeは1)
縦横スクロールバーを長さSIZV,SIZHで作成(ScrollBarAutoResizeModeは2)
縦スクロールバーのサイズを設定
縦スクロールバーのサイズを取得
スクロールバーのサイズを1増加させる
縦スクロールバーの位置を設定
縦スクロールバーの位置を取得
MODEが0なら自動リサイズしない、MODEが1なら画面いっぱいリサイズ、MODEが2なら縦横にスクロールバーがある前提
スクロールバーのデフォルト幅を取得
スクロールバーのデフォルト高さを取得
リストボックスのコントロールを取得
リストボックスにITEM$を追加
リストボックスに配列ITEM$を追加
選択アイテムが変化すると親ウィンドウにNotif(A1=WND,A2=ListBoxChItem)を送る
リストボックスで選択されているアイテム名を取得
リストボックスの項目を初期化
INDEXのリストボックスの項目を選択
NumUpDownのコントロールを取得
NumUpDownの値を取得
NumUpDownの範囲を設定
DropDownListのコントロールを取得
DropDownListのListBox WNDを取得(これに対して項目を追加する)
DropDownListのデフォルト高さを取得
途中
ListViewのコントロールを取得
IVARで識別する
ラジオボタンは非ラジオボタンのメニューアイテム(Separatorなど)が区切りとなって認識される
MENUを作成
未実装
MENUをWNDからの相対座標X,Yに表示
ShowMenuXYExの相対座標版
MENUを絶対座標X,Yに表示
ShowMenuXYと違いMENUの下部Yの座標を指定する
メニューが画面内の下部方向に収まりきらない時ShowMenuXY2 MENU,WND,X_2,Y_2する
MENUを絶対座標X,Yに表示
WNDのMENUを取得
MENUにSTR$を追加,IVARはWindowNotifEventの時にARG2に指定される
MENUにSeparatorを追加
IVARのメニュー項目のSTR$を変更
MENUが存在すればTRUE
非推奨
コンテキストメニューを表示
メニューにサブメニューを追加
メニューにチェックボックスを追加
メニューにラジオボタンを追加
IVARが属するラジオボタングループでチェックされているIVARを返す
IVARがチェックされていればTRUE
サブメニューをID付きで追加
メニューの項目の文字列を変更
メニューの項目を無効化
メニューの項目を有効化
サブメニューを位置POS(zero-based)から検索して取得(存在しなければ0)
サブメニューをIDから検索して取得(存在しなければ0)
メニューの項目を列挙していく 列挙中に項目を追加してはならない C2が0であれば列挙が終了したことを示す
WHILE C
EnumerateMenu MENU,C OUT STR$,C,CHILD,E
WEND
WNDがメニューそのもののウィンドウであればTRUE
MENUを表示しているWNDを返す、MENUが表示されていなければ0を返す
メニューそのもののウィンドウからMENUを返す
MENUがサブメニューをMENUCを含んでいればTRUE(再帰的に探索しない)
MENUが表示されていればTRUE
MENUの種類を設定する これは子メニューを表示したときに伝搬する TYPE=1の時メニューバーから表示されたメニューであることを示す それ以外は規定なし メニューが消えたとき0に設定され直される
MENUの種類を取得する エラーの時0が返る
ウィンドウグループ、これに入れると親子関係にないウィンドウもまとめて扱うことができるようになる
未実装
WNDが持っているウィンドウグループのウィンドウを取得
WNDの次のウィンドウグループのウィンドウを取得
WNDの前のウィンドウグループのウィンドウを取得
FLAG=1のときModeless, FLAG=0のときModal
FLAG=1のときModeless, FLAG=0のときModal
モーダルダイアログボックスを作成
モーダレスダイアログボックスを作成
ファイルを開くダイアログを表示
TYPE$にファイル種別(TXT/DAT)
選択された場合IDをA1、ファイル名をA2$に入れてStrNotifが呼ばれる
ファイルを開くダイアログを表示 LIST$[]にはファイル種別配列を入れる 選択された場合IDをA1、FileDialogInfoをA2に入れてNotifが呼ばれる
ファイル保存ダイアログを表示
TYPE$にファイル種別(TXT/DAT)
選択された場合IDをA1、ファイル名をA2$に入れてStrNotifが呼ばれる
ファイル保存ダイアログを表示 LIST$[]にはファイル種別配列を入れる 選択された場合IDをA1、FileDialogInfoをA2に入れてNotifが呼ばれる
FileDialogInfoを削除、必ず削除する必要がある
ファイル名を取得
ドロップダウンリストで選択した項目を取得
ウィンドウに対しての操作を効率化する 子ウィンドウを一々削除していたら再描画リクエストが一々確認されたりして非常に遅い それをEndWindowOPでまとめてやる
関数 | 説明 |
---|---|
BeginWindowOP(WND) | |
EndWindowOP(WND) | |
MoveWindow2(WND,X,Y) | ->MoveWindowOP(WND,X,Y) |
標準コントロールの機能拡張版
複数行編集、シンタックスハイライトに対応した拡張版
TextBoxExControlを取得
WNDにTXT$を設定
WNDのTextを取得
FLGがTRUEならばシンタックスハイライトを有効化
現在選択されているTextにTXT$を設定
現在選択されているTextを取得
クリップボードにコピー
クリップボードに切り取り
クリップボードから貼り付け
文字の大きさを変更 8または16
フラグ
フラグ
フラグ
フラグ
RICHTEXTを表示
初期化
FILE$を開く
FILE$に保存する
インデントや見出しなどを消す
インデントをINDENT px増やす
LEVEL(1<=LEVEL<=6)見出しを付ける
コピー
ペースト
切り取り
すべて選択
ROW行COL列の表を作成
メッセージボックスを作成
OKボタンのフラグ
エラーメッセージボックスのフラグ
OKボタンが押されたときにWNDへ送信される
キャンセルされたときにWNDへ送信される
MessageBoxが閉じられたときにWNDへ送信されるNotifID
クリップボードを初期化
クリップボードに文字列が格納されているか
クリップボードに格納された文字列を取得(無ければ空文字)
クリップボードに文字列を格納
クリップボードにファイルが格納されているか
クリップボードに格納されたファイルを取得(無ければ空文字)ISCUTがTRUEならば切り取り
クリップボードにファイルを格納、ISCUTがTRUEならば切り取り
クリップボードにTYPE$の文字列データを設定
クリップボードからTYPE$の文字列データを取得、CONTAINSがFALSEなら含まれていない
リッチテキスト文字列が入っている
画像を作成
画像が二次元配列であることを示す
画像が一次元配列であることを示す
画像が論理色であることを示す
画像が物理色であることを示す
画像が物理色で一次元配列であることを示す
画像で影を表示させないことを示す(マウスカーソル用)
画像を二次元配列DATファイルから読み込み
現在のグラフィック面にX,YにIMGを描画(FがTRUEの場合透明色も描画)
現在のグラフィック面にX,YにIMGをパレットPALで描画(FがTRUEの場合透明色も描画)
現在のグラフィック面のX,YをIMGにコピー
画像が正常か確認
画像を削除
画像の幅を取得、エラーの時0
画像の幅を取得、エラーの時0
画像の生配列を取得
IMGをGRP形式でPATH$に保存
画像の大きさを取得
画像を表示する際基準となる位置を取得
画像を表示する際基準となる位置を設定
画像の内部形式を取得 PHY=1の時物理色 DIMENは配列の次元数
画像の属性を取得
画像の属性を設定
画像を回転して新しい画像を生成 FLGにはスプライトの90,180,270,縦反転,横反転フラグを指定する
DATAから画像を生成(NewImageArrayFromDATA D OUT ARY,W,H参照)
TYP$とEXT$に関連付けられたものを取得
拡張子をNAME$に関連付けるTYP$に” “/”*”/”/”,EXT$に拡張子(e.g.TXT)成功するとFALSE
PATH$に関連付けられたプログラムをPATH$を引数に設定して起動
IF GBeginDirect(WND) THEN @ERR
GCLS #BLACK
GLINE 0,0,100,100,#RED
IF GCopyDirect(WND,0,0,GetWindowWidth(WND),GetWindowHeight(WND) THEN @ERR
IF GEndDirect(WND) THEN @ERR
直接描画を可能にする(GPSETなどが使える) 自分でGCLS,GFILLなどを実行してグラフィック面を初期化する必要がある
直接描画を終了し、GBeginWindow(WND)をして転送
直接描画に使っている表示ページ、描画ページを取得
フォント周りのAPI
CalcTextSize TEXT$ OUT W,H
デフォルトフォントでのテキストのサイズを計算
マウスのX座標を取得
マウスのY座標を取得
マウスを(X,Y)に移動
MODEがTRUEなら絶対座標でのマウス移動
BGMPLAYをBEEPのように自由に鳴らせるようにするAPI
MML$が正常なMMLならTRUE
MML$を再生してMUSICを返す
MUSICを再生する
MUSICの再生を一時停止する
MUSICの再生を再開する
MMLの内部変数への書き込み
MMLの内部変数の読み出し
MUSICの音量を設定する(0~127)
MUSICの再生を止める
XとYはマウスからの距離 CALLBACK$は移動終了時あるいは移動の度にOTWのプロセスから呼び出される
COMMON DEF CALLBACK WND,X,Y,W,H
MODE=1の時移動 MODE>=2の時下図方向に大きさを変更
2 3 4
+-----------+
| |
5| |6
| |
+-----------+
7 8 9
事前にRESTOREされたDATAから画像配列を生成する
(SmileBASICのDATAは関数内と関数外の区別が無い)
D次元配列で生成する
PHYSICAL=0の時論理色になりそれ以外の場合物理色 OTW5.0-3Cで廃止
正常に生成できなかった場合要素長0(D!=2)または0,0(D=2)の配列を返す
DEF HOGE
@DATA
DATA "A",&HFF00FF00
DATA "B",&HFF0000FF
DATA ""
DATA 12,12
DATA "ABABABABABAB"
DATA "BABABABABABA"
DATA "ABABABABABAB"
DATA "BABABABABABA"
DATA "ABABABABABAB"
DATA "BABABABABABA"
DATA "ABABABABABAB"
DATA "BABABABABABA"
DATA "ABABABABABAB"
DATA "BABABABABABA"
DATA "ABABABABABAB"
DATA "BABABABABABA"
RESTORE @DATA
IF 0 THEN DIM A[0]
NewImageArrayFromDATA 1 OUT A,,
END
DATA "color-name",color
DATA "color-name",color
...
DATA ""
DATA width,height
DATA "..."
DATA "..."
DATA "..."
...
極めて一般的な形状のマウスカーソル
⬍
⬌
⤡
⤢
⌛
⌶
現在のカーソルを設定(すでに同じ画像が設定されている場合も更新する)
現在のカーソルを設定(すでに同じ画像が設定されている場合更新しない) IMGを書き換えた場合でない限り通常こちらの関数を使ってマウスカーソルを設定すべき IMG=0の時ArrowCursor