Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2761 / 9994 ←次へ | 前へ→

【10501】Re:VBAとCallBack関数
発言  SAU  - 08/8/8(金) 11:28 -

引用なし
パスワード
   neptuneさん、ありがとうございます。

>どんな処理をしているかを書いた方が識者から良いアドバイスを受けられると
>思いますよ。出来るだけソース(概要でも)も。

ボタンを押したら、指定したデータの音を再生し、再生が終わったら次のデータの音を再生する...という処理を作成したいのです。(テキスト合成音です)
WndProc()で終了を監視しないと、再生が終わらないうちに次の音声を再生してしまい、マズイのです。


現在のソースは

●ボタンをクリックするほうのモジュールは
Private Sub Form_Close()
  EndSubClass (Me.hWnd)
End Sub

Private Sub Form_Load()
  BeginSubClass (Me.hWnd)
End Sub

Private Sub 音声再生_Click()
  Dim r1 As Variant
  Dim Ret As String
  Dim m(10) As String
  Dim bib As Integer
  Dim tm As String
  Dim vv As String
  Dim ii As Long
  'stDocName = "FTM1"
  Dim speaker As Long
  
  Ret = 音再生初期処理() ・・・Dll内関数
  If 再生エラー() Then
    Exit Sub
  End If
 
  Ret = 音再生処理() ・・・Dll内関数
End Sub

●サブクラス化のほうは

Public Function WndProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
    '読み上げ終了
   If lParam = -1 Then
     終了フラグ = True
  End If
  DefaultProc = colDProc(CStr(hWnd))
  WndProc = CallWindowProc(DefaultProc, hWnd, umsg, wParam, lParam)
End Function


Public Sub BeginSubClass(hWnd As Long)
  Static bAlready As Boolean
  Dim DefaultProc As Long
  If Not bAlready Then
    bAlready = True
    Set colDProc = New Collection
  End If
  DefaultProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WndProc)
  colDProc.Add DefaultProc, CStr(hWnd)
End Sub

Public Sub EndSubClass(hWnd As Long)
  Dim Ret As Long
  Dim DefaultProc As Long
  DefaultProc = colDProc.Item(hWnd)
  Ret = SetWindowLong(hWnd, GWL_WNDPROC, DefaultProc)
  colDProc.Remove CStr(hWnd)
End Sub


のようにしています。

>Form_Loadでサブクラス化しているのも引っかかります。キチンと表示後、
>何らかのタイミングでサブクラスしてみたら切り分け出来るかも???

Form_Loadでサブクラス化ではなく、ボタンをクリックした時にサブクラス化も試してみたのですが、同じくWndProc()がLoopしてしまいました。

WndProc()がLoopしてしまうので、コードが間違っていると思うのですが
知識もなく、VBのサンプルに沿って書いているので、
どこが間違っているのかわかりません。

引き続き、宜しくお願いします。
866 hits

【10499】VBAとCallBack関数 SAU 08/8/7(木) 18:41 質問[未読]
【10500】Re:VBAとCallBack関数 neptune 08/8/7(木) 22:17 発言[未読]
【10501】Re:VBAとCallBack関数 SAU 08/8/8(金) 11:28 発言[未読]
【10502】Re:VBAとCallBack関数 neptune 08/8/8(金) 16:02 発言[未読]
【10504】Re:VBAとCallBack関数 neptune 08/8/8(金) 21:43 発言[未読]
【10506】Re:VBAとCallBack関数 SAU 08/8/11(月) 10:35 お礼[未読]

2761 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free