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