zoukankan      html  css  js  c++  java
  • MAKEINTRESOURCE

    转自:http://baike.baidu.com/view/2899077.htm

    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.这是针对"资源名字"为"数字类型"时的情况.

  • 相关阅读:
    Android:Butter Knife 8.0.1配置
    webAPI获得链接客户端IP地址
    解决WebClient或HttpWebRequest首次连接缓慢问题
    Android Studio中有用的快捷键栏
    SQL十进制和十六进制相互转换
    SQL分组查询每组前几条数据
    POJ 1011 Sticks
    POJ 1144 Network(割点)
    求无向图中的割边(桥)
    POJ 2553 The Bottom of a Graph
  • 原文地址:https://www.cnblogs.com/pamxy/p/2991424.html
Copyright © 2011-2022 走看看