<ライブラリ>


 SFC miniのインストールディレクトリにある『lib』ディレクトリには、VBScriptで使用可能な機能を記述したスクリプトファイルが含まれています。これらを利用するには、VBScriptの冒頭で、以下の例のように記述します。

Dim SFC
Set SFC=CreateObject("SfcMini.tools")
Execute SFC.Include("<WinForm.vbs>")




或いは、以下のように一行で記述することも可能です。

Execute CreateObject("SfcMini.tools").Include("<WinForm.vbs>")


 上記の例では、『WinForm.vbs』の内容が取り込まれて、そこに記述されている機能が使用可能になります。

 ライブラリには、以下のスクリプトファイルが使用可能な状態で含まれています。

WinForm.vbs
ウィンドウプログラムの作成を補助します。

Menu.vbs
ウィンドウにメニューを表示させる時に用います。

WindowProcedure.vbs
ウィンドウプロシージャを用いる時に使用します。

WinControl.vbs
GUIのフォームにコントロールを実装するときに使用します。

WinSock.vbs
Winsock によるブロッキングタイプの通信を行いたいときに使用します。
 ウインドウプログラムを比較的簡単に作成するためのクラス『WinForm』を提供します。

Dim SFC
Set SFC=CreateObject("SfcMini.tools")
Execute SFC.Include("<WinForm.vbs>")





WinFormクラスには、以下のプロパティがあります。

API
 "user32","kernel32","gdi32"に含まれているAPIを呼び出すことの出来る、SfcMini.DynaCallオブジェクトです。

hWnd
 ウィンドウハンドルです。

CmdShow
 SW_SHOW、SW_MAXIMIZE等で指定される表示状態を設定します。デフォルトは、SW_SHOWです。

WindowClass
 ウィンドウクラス登録時に使用される、WNDCLASSEX構造体です。デフォルトでは次のように設定されています。
With WindowClass
    .cbSize = 48
    .style = 0
    .lpfnWndProc = WP.Address
    .cbClsExtra = 0
    .cbWndExtra = 0
    .hInstance = 0
    .hIcon = 0
    .hCursor = API.LoadCursorA(0,IDC_ARROW)
    .hbrBackground = COLOR_WINDOW
    .lpszMenuName = 0
    .lpszClassName = "Untitled"+hex((timer*90+rnd(1))*256)
    .hIconSm = 0
End With















CreateWindowClass
 ウインドウ作成時に呼び出されるAPI, CreateWindowExの引数を指定するための構造体です。デフォルトでは次のように設定されています。
with CreateWindowClass
    .dwExStyle=0
    .lpClassName=WindowClass.lpszClassName
    .lpWindowName="Untitled"
    .dwStyle=WS_OVERLAPPEDWINDOW
    .x=CW_USEDEFAULT
    .y=CW_USEDEFAULT
    .nWidth=CW_USEDEFAULT
    .nHeight=CW_USEDEFAULT
    .hWndParent=0
    .hMenu=0
    .hInstance=WindowClass.hInstance
    .lpParam=0
end with















Text(hWnd)
 ウィンドウもしくは、ウィンドウに含まれるアイテムのテキストを取得・設定します。hWndには、WinFormクラスオブジェクト・ウィンドウハンドル・アイテムIDのいずれかを指定します。

Caption(hWnd)
 Text(hWnd)と同じ機能です。

WinFormクラスには、以下のパブリックメソッドがあります。

SetFont(FontName,FontSize)
 ウィンドウ及びそこに含まれるアイテムで使用されるフォントを、フォント名とサイズで指定します。

Init
 ウィンドウの初期化を行います。具体的には、ウィンドウクラスの登録を行います。

Show
 ウインドウをCmdShowで示された状態で表示します。

TrackMsg(uMsg, rCode)
 ウインドウプロシージャでトラックされるメッセージと、そのメッセージを処理する際の戻り値を指定します。ここで指定されないメッセージはすべてAPIのDefWindowProcで処理されます。ただし、Initでウィンドウを初期化した時に、デフォルトでWM_DESTROY, WM_COMMAND, WM_CREATEの3つが指定されています。

RegisterEvent(itemID)
 itemIDで示されるIDを持ったアイテムのイベントを処理するようにウインドウプロシージャ(WinFormクラス中のDefaultWndProc)に指令します。

AddControl(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, itemID)
 フォームにアイテムを追加します。lpClassNameには、"BUTTON""LISTBOX"などのアイテムの種類を規定する文字列を、lpWindowNameには"Command1""List1"などのキャプションを、dwStyleにはWS_CHILD, WS_VISIBLE, BS_PUSHBUTTON等の表示形式を、itemIDには、アイテムIDを整数値で、もしくはイベント関数名を文字列で指定します。x, y, nWidth, nHeightでは、縦横の位置と幅を指定します。
 戻り値として、アイテムIDが返ります。

SendMessage(hWnd,Msg,wParam,lParam)
 hWndで示されるアイテム(ハンドルもしくはアイテムIDを指定)にメッセージを送ります。
 戻り値として、APIのSendMessageの戻り値が返ります。

SetWndProc(wndProcName)
 ウィンドウプロシージャを文字列で指定します。デフォルトでは、WinFormクラス中のDefaultWndProcが指定されています。
 戻り値はありません。

GetWndProc
 引数はありません。
 戻り値として、登録されているウインドウプロシージャ名が文字列で返ります。

DefaultWndProc(hWnd,Msg,wParam,lParam)
 WinFormクラスに含まれているデフォルトのウィンドウプロシージャを外部から呼び出したい時に使用します。この関数では、ウィンドウに含まれるアイテム関連の制御(表示・イベントの処理)が行われます。

MsgLoop
 メッセージループです。戻り値として、スクリプトを終了させる時に使用されるべき値が返ります。

CreateWindowEx
DispatchMessage
ShowWindow
UpdateWindow

 これらの関数を利用すると、規定のウインドウプロシージャに対応した状態でAPIが呼び出されます。

» サンプルコード

 ウィンドウのメニュー表示のためのクラス『Menu』『PopupMenu』を提供します。

Dim SFC
Set SFC=CreateObject("SfcMini.tools")
Execute SFC.Include("<Menu.vbs>")





Menuクラスには、以下のパブリックメソッドがあります。

hMenu
 引数はありません。
 戻り値として、メニューハンドルを返します。

AppendPopupMenu(wIDNewItem,lpNewItem)
 wIDNewItemで指定されたハンドルを持つポップアップメニューを、lpNewItem(文字列)で指定されたメニュー名で表示するように設定します。
 戻り値はありません。

SetMenu(hWnd)
 作成されたメニューを、hWndをハンドルに持つウインドウで表示するように設定します。
 戻り値はありません。

PopupMenuクラスには、以下のパブリックメソッドがあります。

hMenu
 引数はありません。
 戻り値として、メニューハンドルを返します。

AppendMenu(wIDNewItem,lpNewItem)
 lpNewItem(文字列)で指定されたメニューを追加します。wIDNewItemには、アイテムIDを整数値で、もしくはイベント関数を文字列で指定します。
 戻り値として、WinFormクラスのRegisterEventで用いることの出来るアイテムIDを返します。

AppendSeparator
 引数はありません。メニューにセパレータを追加します。
 戻り値はありません。

AppendPopupMenu(wIDNewItem,lpNewItem)
 wIDNewItemで指定されたハンドルを持つポップアップメニューを、lpNewItem(文字列)で指定されたメニュー名で表示するように設定します。
 戻り値はありません。

» サンプルコード

 GUIフォームのコントロールを扱うためのクラス『WinLabel』『WinButton』『WinCheck』『WinRadio』『WinText』『WinList』『WinCombo』を提供します。

Dim SFC
Set SFC=CreateObject("SfcMini.tools")
Execute SFC.Include("<WinControl.vbs>")





これらのクラスの使用方法についてはサンプルスクリプトの『WinForm.vbs』を参考にしてください。
 ウィンドウプロシージャを扱うためのクラス『WindowProcedure』を提供します。

Dim SFC
Set SFC=CreateObject("SfcMini.tools")
Execute SFC.Include("<WindowProcedure.vbs>")





WindowProcedureクラスには以下のパブリックメソッドがあります。

Address
 引数はありません。
 ウインドウプロシージャのアドレスを示すポインタを返します。

SetWndProc(funcName)
 funcNameに、ウィンドウプロシージャを記述する関数名を文字列で指定します。
 戻り値はありません。

TrackMsg(uMsg, rCode)
 ウィンドウプロシージャに、uMsgで示されたメッセージを、rCodeで示された戻り値で処理するように指令します。

CreateWindowEx
ShowWindow
UpdateWindow
DispatchMessage

 VBScriptで記述するウィンドウプロシージャに対応させるためにはこれらのパブリック関数をAPIとして用いてください。

PostQuitMessage
RegisterClassEx
UnregisterClass
LoadCursor
GetMessage
TranslateMessage
GetStockObject
DefWindowProc

 上記の4つの関数以外に、これらの関数もAPI呼び出しに使用可能です。

» サンプルコード

 ブロッキングタイプのソケットを扱うためのクラス『WinSockB』を提供します。

Execute CreateObject("SfcMini.tools").Include("<Winsock.vbs>")
dim wsk
set wsk=CreateBlockingWinSock()





使用方法についてはサンプルスクリプトの『WinSockClient.vbs』及び『WinSockServer.vbs』を参考にしてください。