ウインドウ操作

Topへ

 

述語名/引数  (eg:CreateWindow *x *y *w *h *title )
 (eg:CreateWindow *x *y *w *h *title *style *show)
要約 ウインドウを生成します。
互換性 Win
解説 *x *y それぞれウインドウのスクリーン座標のx軸y軸を指定します。
*w *h それぞれウインドウが管理するビットマップの幅と高さを指定します。ウインドウの大きさは、クライアント領域が*w×*hになるようなサイズに設定されます。
*title タイトルバーに表示さ列文字列を指定します。
*style ウインドウのスタイルを指定します。
*show 表示状態を指定します。

*styleにはウインドウのスタイルを指定するシンボルのリストを与えます。指定できるシンボルは以下のとおりです。

WS_BORDER
WS_CAPTION
WS_CHILD
WS_CHILDWINDOW
WS_CLIPCHILDREN
WS_CLIPSIBLINGS
WS_DISABLED
WS_DLGFRAME
WS_GROUP
WS_HSCROLL
WS_ICONIC
WS_MAXIMIZE
WS_MAXIMIZEBOX
WS_MINIMIZE
WS_MINIMIZEBOX
WS_OVERLAPPED
WS_OVERLAPPEDWINDOW
WS_POPUP
WS_POPUPWINDOW
WS_SIZEBOX
WS_SYSMENU
WS_TABSTOP
WS_THICKFRAME
WS_TILED
WS_TILEDWINDOW
WS_VISIBLE
WS_VSCROLL

*showには表示状態指定するシンボルのリストを与えます。指定できるシンボルは以下のとおりです。

SW_FORCEMINIMIZE
SW_HIDE
SW_MAXIMIZE
SW_MINIMIZE
SW_RESTORE
SW_SHOW
SW_SHOWDEFAULT
SW_SHOWMAXIMIZED
SW_SHOWMINIMIZED
SW_SHOWMINNOACTIVE
SW_SHOWNA
SW_SHOWNOACTIVATE
SW_SHOWNORMAL

これらのシンボルの詳しい説明は、MSDNを参照してください。

以下の例では、固定されたポップアップウインドウを生成します。

(as (test) :
(loadModule "eggraph.dll" *2)
(eg:CreateWindow 10 20 640 480 "Hello!" (WS_POPUP) (SW_SHOW))
(eg:TextOut 250 230 "HELLO!")
(eg:Update)
(loop))
(as (loop):(eg:GetMessage ?)(loop))

 


述語名/引数  (eg:DestroyWindow)
要約 ウインドウを破棄します。
互換性 Win
解説 N/A

 


述語名/引数  (eg:GetScreenSize *w *h)
要約 画面全体の幅と高さを取得します。
互換性 Win
解説 N/A

 


述語名/引数  (eg:GetClientSize *w *h)
要約 クライアント領域の幅と高さを取得します。
互換性 Win
解説 N/A

 


述語名/引数  (eg:GetWindowRect *left *top *w *h)
要約 ウインドウ位置と幅と高さを取得します。
互換性 Win
引数 *left [out] ウインドウの左上のX座標
*top [out] ウインドウの左上のY座標
*w [out] ウインドウの幅
*h [out] ウインドウの高さ
成功/失敗 ウインドウの位置とサイズに関する情報が正しく取得され、各引数に関するマッチングが成功した。
解説 N/A

 


述語名/引数  (eg:EnableWindowScrollBar)
要約 ウインドウにスクロールバーを表示します。
互換性 Win
解説 eg:CreateWindowで生成したウインドウは内容を外側の大きさに合わせて拡大縮小します。このルールを呼び出すことで内容のサイズは本来のものに固定され、ウインドウのサイズのために全ての内容が表示されないときスクロールバーが出現します。

 


述語名/引数  (eg:DisableWindowScrollBar)
要約 ウインドウのスクロールバーを非表示にします。
互換性 Win
解説 eg:EnableWindowScrollBarで指定した設定を解除して、デフォルトの状態に戻します。

 


述語名/引数  (eg:MoveWindow *x *y *w *h)
要約 ウインドウの位置とサイズを指定します。
互換性 Win
解説 *xと*yにはスクリーン座標を指定します。*wと*hにはウインドウの幅と高さを指定します。

 


述語名/引数  (eg:SaveScreen *file)
要約 ウインドウの内容をビットマップとしてファイルに保存します。
互換性 Win
解説 N/A

 


述語名/引数  (eg:Update)
 (eg:Update *x *y *w *h)
要約 ウインドウを再描画します。
互換性 Win
解説 実際にはウインドウ再描画を要求するメッセージを発行します。
再描画が実際に行われるのはeg:GetMessageかeg:PeekMessageが呼ばれた後です。

前者の形式はウインドウのクライアント領域全てが書き換え対象になります。
後者の形式は書き換え領域を矩形で指定します。

以下の例では、ウインドウの下部に配置されたボタンが消えないようにeg:Updateで書き換える矩形を指定しています。

例:

(as (test) :(loadModule "eggraph.dll" *2)(test2))
(as (test2):
(eg:CreateWindow 10 20 640 480 "eg:Updateのサンプル")
(eg:CreateButton "test" 200 401 100 50 0 *hw)
(setv COLOR 0)
(eg:Update)
(eg:SetTimer 0 10)
(loop))
(as (loop):(eg:GetMessage *wm)(MH *wm)(loop))

(as (MH (WM_TIMER 0)):(color))
(as (MH ?))

(as (color)(getv COLOR *c)(> *c 255):(setv COLOR 0))
(as (color)(getv COLOR *c):
(:= *c1 (+ *c 1))
(setv COLOR *c1)
(eg:SetBrush *c *c *c)
(eg:Rectangle 0 0 640 400)
(eg:Update 0 0 640 400))