【发布时间】:2020-09-21 16:43:11
【问题描述】:
我是 C++ 新手。这是我从 WIN32 API 书中改编的代码。 只有在调试中的 x86 模式打开时,它才能按需要工作。当有 x64 时,它正在编译但不工作。 我尝试将 GWL_HINSTANCE 更改为 GWLP_HINSTANCE 没有结果。
hBmpBkgr = LoadBitmapW((HINSTANCE)GetWindowLongW(hWnd, GWLP_HINSTANCE), MAKEINTRESOURCEW(IDB_STONE));
hBkBrush = CreatePatternBrush(hBmpBkgr);
SetClassLongW(hWnd, GCLP_HBRBACKGROUND, (LONG)hBkBrush);
hBmpBall = LoadBitmapW((HINSTANCE)GetWindowLongW(hWnd, GWLP_HINSTANCE), MAKEINTRESOURCEW(IDB_BALL));
GetObjectW(hBmpBall, sizeof(bm), (LPSTR)&bm);
hMemDcFrame = CreateCompatibleDC(hdc);
hBmpFrame = CreateCompatibleBitmap(hdc, rect.right, rect.bottom);
SelectObject(hMemDcFrame, hBmpFrame);
SetGraphicsMode(hMemDcFrame, GM_ADVANCED);
【问题讨论】:
-
很可能找到了。我需要改变这个:GetWindowLongW(hWnd, GWLP_HINSTANCE) 到这个 GetWindowLongPtr(hWnd, GWLP_HINSTANCE)。任何 cmets 赞赏
-
原因在官方文档中:docs.microsoft.com/en-us/windows/win32/api/winuser/…如果你开心就回答自己。
标签: winapi x86 x86-64 32bit-64bit