アットウィキロゴ

OTYAX > VER > 5 > OTW

OTYA WINDOW SYSTEM(OTW)

開発中
(OTW5.0-11)
ボタンもテキストボックスもみんなウィンドウ

Control

GetWindowControl() Windowのコントロールを取得
NewControl NAME$ OUT CTL,ERR 新しいコントロールを作る
ExtendControl NAME$,PARENT OUT CTL,ERR 既存のコントロール(Windowなど)を継承
CheckControl(CTL) コントロールが正常かを確認
DeleteControl(CTL) コントロールを削除

Handler

Handlerの書式
COMMONは付ける
COMMON DEF XXX WND,CTL,TYPE,A1,A2
関数 説明 引数1 引数2
SetControlPainter(CTL,HANDLER$) コントロールの描画イベントを処理する関数の登録
SetControlLMouseUpHandler(CTL,HANDLER$) 左クリック(ボタンから離されたとき)のイベントを処理する関数の登録 X Y
SetControlLMouseDownHandler(CTL,HANDLER$) 左クリック(ボタンが押されたとき)のイベントを処理する関数の登録 X Y
SetControlMouseMoveHandler(CTL,HANDLER$) マウスが移動したときのイベントを処理する関数の登録 XY マウスの状態
SetControlNotificationHandler(CTL,HANDLER$) 通知(ボタンがクリックされた、Enterが押された)など そのウィンドウのVar0そのウィンドウのWND
SetControlKeyHandler(CTL,HANDLER$) キーが押されたとき BUTTON()から特殊キーを覗いた値
SetCotrolChFocusHandler(CTL,HANDLER$) フォーカスが変わった時 フォーカスが移ったらTRUE

マウスの状態

  10
0b00
bit 0CTL_LBTNFLG
bit 1CTL_RBTNFLG
1なら左クリック,2なら右クリック,3なら両方
IF BTN AND GetControlStateLBtn()THEN ~左クリック
IF BTN AND GetControlStateRBtn()THEN ~右クリック

Window

GetRootWND() ルートウィンドウを取得->GetRootWindow()にしたい
CheckWindow(WND) ウィンドウが正常化を確認
WindowBackFlag() NewWindowで指定するフラグ, ウィンドウを後ろに配置する
WindowFrontFlag() NewWindowで指定するフラグ, ウィンドウを前に配置する
NewWindow CTL,NAME$,X,Y,WIDTH,HEIGHT,PARENT,FLG OUT WND,ERR コントロールと名前と座標とサイズと親ウィンドウとフラグを使ってウィンドウを作成
NewTopLevelWindow CTL,NAME$,WIDTH,HEIGHT OUT WND,ERR コントロールと名前とサイズを使ってウィンドウを作成
FrontWindow(WND) ウィンドウを手前に持ってくる
MoveWindow(WND,X,Y) ウィンドウを指定座標に持っていく
SendWindowEvent(WND,TYPE,A1,A2) ウィンドウへイベントを送信
RepaintWindow(WND) ウィンドウへ再描画イベントを送信
CallBaseControlHandler(WND,CTL,TYPE,A1,A2) (イベントのハンドラーで)親ハンドラを呼び出し
PeekWindowEvent(WND)->OUT CTL,TYPE,A1,A2 ウィンドウのイベントキューの先頭を削除せずに帰す
UpdateWindow(WND) ウィンドウのイベントを処理
GetWindowName$(WND) ウィンドウの名前を取得
GetWindowWidth(WND) ウィンドウの幅を取得
GetWindowHeight(WND) ウィンドウの高さを取得
GetWinVer$() バージョンを取得("5.0"など)

Graphic

GBeginWindow(WND) 描画開始を明示的に宣言する
GEndWindow(WND) 描画終了を明示的に宣言する
GPSETWindow WND,X,Y,COL ウィンドウに点を書く
GFILLWindow WND,X,Y,X2,Y2,COL
GBOXWindow WND,X,Y,X2,Y2,COL
GPRINTWindowCC WND,X,Y,STR$,PAL コンソール色で文字を表示
GPRINTWindow WND,X,Y,STR$,COL
GLOADWindow WND,X,Y,W,H,IMG[],FLG,MODE

標準GUI部品

GetWindowControl() ウィンドウを表示するコントロール
GetButtonControl() ボタンを表示するコントロール
GetToggleButtonControl() トグルボタンを表示するコントロール
GetTextBoxControl() テキストボックスを表示するコントロール
GetLabelControl() 文字を表示するコントロール
SetLabelAlignCenter LABEL 文字を中央
SetLabelAlignLeft LABEL 文字を左寄せ(デフォルト)
SetLabelAlignRight LABEL 文字を右寄せ

Sample

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

flag memo

  • CTL_FRMBTNHANDLER
  • CTL_LBTNFLG
  • CTL_RBTNFLG
  • CTL_BTNDWNFLG
  • CTL_BTNUPFLG

文字列は"123"[0]みたいな使い方が可能

これから実装したいもの

GetScreenWidth()
GetScreenHeight()
GetWinVer$()

message

MouseLeave
MouseDoubleClick

標準コントロール

これらのコントロールを継承する際は親コントロールのHandlerを呼び出す必要がある

Window

Paint 枠を描画
ChFocus 前面に移動

Button

Paint ボタンを描画
LMouseUp 親ウィンドウにNotifを送信
最終更新:2015年07月26日 15:36