查看windows sdk,我发现makeintresourcew的define指令:

#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))

有人能给我解释一下这到底是什么意思吗?例如,makeintresourcew(0)的值是多少?(1)?(1)?

最佳答案

此宏的结果将指向值等于给定参数的长字符串。可以通过读取预编译器输出(参见/p+C++编译器选项)来查看它。在win32和x64配置中,当需要lp[w]wstr指针时,编译此宏结果需要所有强制转换。
一些windows api,比如loadicon,期望字符串指针作为它们的参数。可能,这些函数测试指针值,如果指针值小于某个最大值,则将其解释为资源索引,而不是字符串(丑陋的C样式接口问题)。因此,该宏允许通过适当的转换将单词作为字符串传递,而不更改其值。

07-24 09:36