DoEventsCE
Windows CE Toolkit for VisualBasic 6.0 ( 以下 VB-CE )
でサポートされていない DoEvents()
と同機能の自作関数です。
そのうちサポートされて役立たずになるでしょう(笑)が、VC++
などで DoEvents() を使いたい場合は参考になるかも。
ちなみに Delphi なら Application.ProcessMessages()
としてサポートされています。
'標準モジュールに記述します。 'ウィンドウメッセージ関連の処理を行う API '第1引数の型は本来 MSG 構造体ですが、VB-CE ではユーザ定義型を '使えないので Byte 型配列を代用します Declare Function PeekMessage Lib "Coredll" Alias "PeekMessageW" _ (lpMsg As Variant, ByVal hwnd As Long, _ ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, _ ByVal wRemoveMsg As Long) As Long Declare Function TranslateMessage Lib "Coredll" _ (lpMsg As Variant) As Long Declare Function DispatchMessage Lib "Coredll" Alias "DispatchMessageW" _ (lpMsg As Variant) As Long 'メッセージキューの操作定数 Private Const PM_REMOVE = &H1 'キューから取り出した後削除する Public Sub DoEventsCE() '機能 ' VB-CE 版 DoEvents() 関数 'MSG 構造体は 28 Bytes Dim bMsg(27) As Byte 'メッセージがキューにあれば、そこから1つ取り出して削除 If PeekMessage(bMsg(0), 0, 0, 0, PM_REMOVE) <> 0 Then '仮想キーメッセージを処理 Call TranslateMessage(bMsg(0)) 'ウィンドウプロシージャにメッセージを送って処理を任せる Call DispatchMessage(bMsg(0)) End If End Sub
実行例:なし