|
>Private Declare Function GetWindowLongPtr Lib "user32" _
> Alias "GetWindowLongA" _
> (ByVal hWnd As Long, _
> ByVal nIndex As Long) As Long
まず、Aliasの関数名を変えないとだめです。
(Libに指定した)user32.dllの(Aliasにしていした)GetWindowLongAという関数を
(Declareで指定した)GetWindowLongPtrという関数として使いますという宣言文になります。
ついでに
>Private Declare Function SetWindowLongPtr Lib "user32" _
> Alias "SetWindowLongA" _
> (ByVal hWnd As Long, _
> ByVal nIndex As Long, _
> ByVal dwNewLong As Long_PTR) As Long
のLong_PTR型はVBAにはない型です。これは64ビット環境と32ビット環境で大きさが変わるようなつくりになっています。
よって32ビット環境では、Long型でよいはず。
WinAPIを使いこなすには多少なりともC言語の知識があったほうがよいです。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_Win32_GetWindowLongPtr.asp
LONG_PTR GetWindowLongPtr(
HWND hWnd, // ウィンドウのハンドル
int nIndex // 取得する値のオフセット
);
↓
Private Declare Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongPtrA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_Win32_SetWindowLongPtr.asp
LONG_PTR SetWindowLongPtr(
HWND hWnd, // ウィンドウのハンドル
int nIndex, // 変更する値のオフセット
LONG_PTR dwNewLong // 新しい値
);
↓
Private Declare Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongPtrA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
かな。試していませんけど。
|
|