WSHでWin32APIを呼び出す-その12
2005年7月14日
(←戻る)
SFCを機能アップして、メニューが使えるようにした。あと、バグフィックス等を行ったので、安定に走るようになってきている。
メニュー表示をWin32APIで実現させるための方法をWebで探してみたが、なかなか良いのが見つからなかった。というのは、殆どの参考文献がリソースファイルを用いてメニューを表示させているためで、そういったことがSFCではまだ出来ないからである。最終的に参考になったのは、ここで、これを参考にしてMenuクラス、PopupMenuクラスを作成し、それらを用いてメニューを表示するようにした。作成したMenu.vbsの実行画面は以下の通り。

(SFC ver 0.1.2.2はここからダウンロードできます)
もう一つ、今回のバージョンのSFCで取り入れた機能は、VB の『Declare Function』、『Type』という二つの宣言文をそのまま用いることが出来るという物である。例えば、
と記述すれば、あとはSFCが自動的に、Win32APIのDynaWrapへの登録と、構造体として使えるクラスの登録を行ってくれる。しかも、『UserWrap.GetCapture()』ではなくて『GetCapture()』だけで良く、また関数名とDLL内のAlias名が異なる場合も対処されていて、使い勝手はVBと殆ど同じである。
構造体用のクラスの方も改良を加え、GetData()関数を呼び出す必要が無くなった。しかも、以前のバージョンでは出来なかった、2つ以上の構造体を同時に用いることが出来るようになっている。これは、dwtools.dllに新たに加えたMalloc関数群を用いているためである。ただ、このMalloc周りはまだ十分に気に入った物になっていないので、改良してゆくつもり。
(続く)
SFCを機能アップして、メニューが使えるようにした。あと、バグフィックス等を行ったので、安定に走るようになってきている。
メニュー表示をWin32APIで実現させるための方法をWebで探してみたが、なかなか良いのが見つからなかった。というのは、殆どの参考文献がリソースファイルを用いてメニューを表示させているためで、そういったことがSFCではまだ出来ないからである。最終的に参考になったのは、ここで、これを参考にしてMenuクラス、PopupMenuクラスを作成し、それらを用いてメニューを表示するようにした。作成したMenu.vbsの実行画面は以下の通り。

(SFC ver 0.1.2.2はここからダウンロードできます)
もう一つ、今回のバージョンのSFCで取り入れた機能は、VB の『Declare Function』、『Type』という二つの宣言文をそのまま用いることが出来るという物である。例えば、
'Begin Declaration ' 'Declare Function GetCapture Lib "user32" Alias "GetCapture" () As Long ' 'Type POINTAPI ' x as long ' y as long 'End Type ' 'End Declaration
と記述すれば、あとはSFCが自動的に、Win32APIのDynaWrapへの登録と、構造体として使えるクラスの登録を行ってくれる。しかも、『UserWrap.GetCapture()』ではなくて『GetCapture()』だけで良く、また関数名とDLL内のAlias名が異なる場合も対処されていて、使い勝手はVBと殆ど同じである。
構造体用のクラスの方も改良を加え、GetData()関数を呼び出す必要が無くなった。しかも、以前のバージョンでは出来なかった、2つ以上の構造体を同時に用いることが出来るようになっている。これは、dwtools.dllに新たに加えたMalloc関数群を用いているためである。ただ、このMalloc周りはまだ十分に気に入った物になっていないので、改良してゆくつもり。
(続く)