winapi - Loadbitmap 在 x86 上编译和运行良好,但在编译为 x64 时无法正常工作
问题描述
我是 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);
解决方案
将指定偏移处的指定 32 位(长)值替换到额外类内存或指定窗口所属类的 WNDCLASSEX 结构中。
注意:此函数已被 SetClassLongPtr 函数取代。要编写与 32 位和 64 位版本的 Windows 兼容的代码,请使用SetClassLongPtr。
此外,[LoadBitmap
可用于“要求”部分中指定的操作系统。在后续版本中可能会更改或不可用。相反,使用LoadImage和DrawFrameControl。]
更多详情请参考:LoadBitmap
推荐阅读
- node.js - 如何在类中存根所需的模块?
- javascript - 文本输入更改时更新组件列表中子组件的状态
- python - Python 脚本不会自动运行或从快捷方式运行
- php - PHP:Multi cUrl 一夜之间停止工作,没有错误
- amazon-web-services - AVRO 模式的 JSON 看起来有效,但返回 Input is not a valid Avro 模式
- javascript - 如何在 Dynamics CRM 2016 v8.2 中使用 javascript 在运行时检查用户权限?
- javascript - SyntaxError:请求的模块不提供名为“连接”的导出
- oracle - Oracle 云始终免费 - APEX 无法正常工作 - ORDS 问题?
- ios - viewmodel 和 view 如何通信?
- c# - 通过在旧版本 Entity Framework 中工作的 Entity Framework Core 执行 GroupBy 查询时引发 NullReferenceException