|
分類:[C/C++]
いつもお世話になっています。 XP + VS2005 (SDK) で、単純なサブクラス化の話です。
g_pM->pGI[i].hBtn = CreateWindow("BUTTON", NULL, ...
でボタンを作成します。(!= NULL です) x86 では下記のようにしており、これは問題ありません。
g_pM->pGI->pProc = (WNDPROC)GetWindowLong(g_pM->pGI[i].hBtn, GWL_WNDPROC);
今回、x64 に対応させるため、下記のように変更したところ、
g_pM->pGI->pProc = (WNDPROC)GetWindowLongPtr(g_pM->pGI[i].hBtn, GCLP_WNDPROC);
インデックスが無効です、のエラーが出ました。 WinUser.h を見ると
#define GWL_WNDPROC (-4) #ifdef _WIN64 #undef GWL_WNDPROC ...
#define GCLP_WNDPROC (-24)
と定義されています。
VS2005 のバグ?でしょうか? ワケワカ状態 (--; ですので、よろしくお願いします。
|