作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
宏定义为:
#define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))
为什么这可以用来指示资源 ID(16 位无符号整数)或资源名称(指向 char 数组的指针)?这不会有效地将地址空间(在 32 位系统上)限制为 16 位吗?否则系统怎么知道我用的是ID还是名字?
最佳答案
这是因为 Windows 不允许为地址空间的前 64 KB 映射页面。捕获空指针引用。但我也想在从 16 位版本的 Windows 转换的程序中捕获指针错误。
一个副作用是,这允许可靠地区分打包到指针值中的资源 ID,因为它们总是指向不可映射的内存。
关于c++ - 为什么 MAKEINTRESOURCE() 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3610565/
宏定义为: #define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i)))) #define MAKEINTRESOURCEW(i) ((LP
我遇到一个问题,每当我将 MFC 资源 ID 传递给它时,MAKEINTRESOURCE 宏似乎总是返回一个错误的指针。资源 ID 全部列在 Resource.h 中,它们与资源属性中设置的 ID 相
这个问题在这里已经有了答案: How to change the title bar icon using winapi (1 个回答) 关闭 7 年前。 我正在使用 Code:Blocks c++
大家好, 我对我们使用的某些 Win32 API 数据类型和宏有些困惑-: 首先-:关于 WM_NOTIFY 消息。 lparam 包含指向 NMHDR 结构的指针。所以如果它是一个指针,为什么像这样
我是一名优秀的程序员,十分优秀!