>>611
MSDN に載っていなかっただろうか。(バージョンによってはそうでないかも知れない)
| アプリケーションは、PostMessage、timeGetSystemTime、timeGetTime、timeSetEvent、
| timeKillEvent、midiOutShortMsg、midiOutLongMsg、および OutputDebugString を
| 除いて、コールバック関数の中から、どんなシステム定義された機能も呼ぶべきでは
| ありません。

これに反する事はやってはいけない。
それを守らなければ、何が起こるかわからない。
Unload なんかしたら、DestroyWindow() やら DeleteObject() やら、おびただしい量の
API が呼ばれる。
これらを見切れないようでは、timeSetEvent() を呼んではいけない。

そもそも VB は途方も無く遅いので、高精度タイマを使うのには向いていない。
本当に高精度タイマが必要なのか?
タイマーコントロールが使えないかを検討する事。

なお、コールバック関数が 1 度しか呼ばれない事を期待する場合は、最後の引数に 1
ではなく 0 を指定する。
これにより、timeKillEvent() を呼び出す必要がなくなる。
より良い方法では、マジックナンバーの代わりに TIME_ONESHOT、TIME_PERIODIC 定数
を定義する。