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

実行例:なし

戻る