MAKEINTRESOURCE的作用

转载自https://blog.csdn.net/mjlsuccess/article/details/9225897


MAKEINTRESOURCE是一个资源名转换的宏, 

  VC的定义是(winuser.h): 
  #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i))) 
  #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i))) 
  #ifdef UNICODE 
  #define MAKEINTRESOURCE MAKEINTRESOURCEW 
  #else 
  #define MAKEINTRESOURCE MAKEINTRESOURCEA 
  #endif // !UNICODE 
  这个宏是把一个数字类型转换成指针类型的宏,它不存在释放的问题. 
  用这个宏的主要原因是有的资源是用序号定义的,而不是字符串.所以要把数字转换成字符串指针,然后再传递给LoadResource之类的函数,这样才加载了资源. 
  要释放资源(用LoadResource加载的)可以调用FreeResource函数把LoadResource返回的指针传递给FreeResource.
  MAKEINTRESOURCE 的作用: 
  是把一个"数字形ID",转化为"字符串".但是执行前后,输入的数据的内容和长度是不变的!它只不过就是C语言里面"强制类型转换"而已. 
  请看 Winuser.h 代码: 
  #define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i))) 
  #define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i))) 
  #ifdef UNICODE 
  #define MAKEINTRESOURCE MAKEINTRESOURCEW 
  #else 
  #define MAKEINTRESOURCE MAKEINTRESOURCEA 
  #endif // !UNICODE 
  现在,再来归纳它的用法.就用FindResource来说明.(这个函数与MFC的AfxFindResourceHandle) 
  HRSRC FindResource( 
  HMODULE hModule, // module handle 
  LPCTSTR lpName, // resource name 
  LPCTSTR lpType // resource type 
  ); 
  就是lpName参数需要使用MAKEINTRESOURCE ,因为它需要LPCTSTR类型的参数输入.那么,情况就很清楚了.凡涉及"资源"的API或者MFC类,在参数类型为LPCTSTR时,就应该使用 MAKEINTRESOURCE.这是针对"资源名字"为"数字类型"时的情况.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值