|
ていうか、やっぱり「GetWindowLongPtr」「SetWindowLongPtr」はDLLの関数ではないですね。
実際使おうとするとDLLにないと言われてしまったところ(Xp SP2/Office2003)、
Dependency WalkerというDLL内の関数を見ることができるツールで確認したところ、
「GetWindowLongPtr」「SetWindowLongPtr」は存在しませんでした。
> この関数は SetWindowLongPtr に取って代わられています。32ビット版と64ビッ
> ト版の Windows で共通して利用できるコードを記述する場合には、
> SetWindowLongPtr 関数を使用する必要があります。
これは、ヘッダファイルをつかってコーディングするつまり「C/C++」の時の注意事項だったのでしょう。
よって、ヘッダファイルを使わずに、Declear宣言していくVBAでは、使えないのではないでしょう。
まぁ、Declare宣言する以上、64ビット環境になればまた書き直す羽目になると思うので
とりあえず「GetWindowLong」「SetWindowLong」を利用すればよいです。
(ちゅうか、Win32 Declare宣言なんてほとんど書き直しでしょ。なんせWin32 APIですから)
(以下、参考程度。わからなければ読まなくてもよいです。)
user32.dllってことは32ビット用のDLLですから、64ビット用はuser64.dllとかになって、
おそらくヘッダで
#ifdef 64ビット環境である
#define GetWindowLongPtrA GetWinodwLongPtrA // user64.dllには定義されている(予想)
#define GetWindowLongPtrW GetWindowLongPtrW // user64.dllには定義されている(予想)
#else
#define GetWindowLongPtrA GetWindowLongA
#define GetWindowLongPtrW GetWindowLongW
#endif
#ifdef UNICODE
#define GetWindowLongPtr GetWindowLongPtrW
#else
#define GetWindowLongPtr GetWindowLongPtrA
#endif
てなかんじになっているんでしょう。(最新のPlatform SDK)
|
|