size_t,void*和hbitmap数据类型等效物
我应该使用什么 MIDL 数据类型来声明 C++ 数据类型的接口方法参数,例如 size_t
、void*
、HBITMAP
和其他类型的 winapi 句柄(HANDLE
、HFONT
等)?
What MIDL data types should I use to declare interface method parameters of C++ data types like size_t
, void*
, HBITMAP
and other types of winapi handles (HANDLE
, HFONT
, etc.)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
size_t
是实现定义的,但使用 Visual Studio 的 CRT,在针对 32 位体系结构进行编译时,它是一个无符号 32 位整数,在针对 64 位体系结构进行编译时,它是一个无符号 64 位整数。您需要使用unsigned __int3264
,它在 32 位架构上为 32 位,在 64 位架构上为 64 位。void*
是另一种依赖于平台的类型。 MIDL 提供了一个void*
类型,但我相信它只是一个 32 位指针,无论目标地址大小如何。您可能想改用unsigned __int3264
类型。MIDL 提供了与各种句柄类型同名的类型,尽管我不确定是否包含所有句柄类型;至少我知道 HBITMAP 是这样。
size_t
is implementation defined, but using Visual Studio's CRT, it's an unsigned 32-bit integer when compiling for 32-bit architectures and an unsigned 64-bit integer when compiling for 64-bit architectures. You'll want to useunsigned __int3264
, which is 32 bits on a 32-bit architecture and 64 bits on a 64-bit architecture.void*
is another platform dependent type. MIDL provides avoid*
type, but it's only a 32-bit pointer regardless of the targeted address size, I believe. You may want to use theunsigned __int3264
type, instead.MIDL provides types with the same names as the various handle type, though I'm not sure if all handle types are included; I know
HBITMAP
is, at least.