プロシージャフックについて – プログラミング – Home

プロシージャフックについて
 
通知
すべてクリア

[解決済] プロシージャフックについて


ばあや
 ばあや
(@ばあや)
ゲスト
結合: 19年前
投稿: 4
Topic starter  

VBからユーザーメッセージを取得する為、サンプルソースを発見したのですが、コンパイルでエ
ラーとなります。

「addressOf オペレータの使い方が適切ではありません」

コードは書きのとおりなのですが、ご存知の方お願いします。

Option Explicit

Public Declare Function CallWindowProc Lib user32 Alias CallWindowProcA
(ByVal PWF&,ByVal hWnd&, ByVal Msg&, ByVal wParam&, ByVal lParam As Long) As
Long
Public Declare Function SetWindowLong Lib user32 Alias SetWindowLongA
(ByVal hWnd&,

ByVal nIndex&, ByVal dwNewLong&) As Long

Public Const GWL_WNDPROC = (-4)
Public Const WM_NCLBUTTONDOWN = &HA1

Dim oad As Long

Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam
As Long, ByVal lParam As Long) As Long

  If uMsg = WM_NCLBUTTONDOWN Then
    Debug.Print 非クライアント領域(タイトルバーなど)がクリックされました
  End If

  WindowProc = CallWindowProc(oad, hWnd, uMsg, wParam, lParam)

End Function

Public Sub Form_Load()
  oad = SetWindowLong(Form1.hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub


引用未解決
トピックタグ
ばあや
 ばあや
(@ばあや)
ゲスト
結合: 19年前
投稿: 4
Topic starter  

BASに記載することにより解決しました。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

まぁ解決しちゃっているけど、
> 「addressOf オペレータの使い方が適切ではありません」
は確か addressOf で使えるのは、標準モジュールに記述されたものだけだったような。
Formモジュールでかかれたプロシージャに対しては当然出来ないかと。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました