我的问题可能很简单,但我一直想不明白:
MAKEINTRESOURCE宏将一个整型数强制类型转换成一个字符串指针,这个指针就真的指向一个字符串吗?
我看资源文件里的资源ID,每个整型数都是有序递增的,难道每个字符串的地址都恰好相差1?这不可能吧。
谁能帮我解释一下?谢谢!
// Load bitmap In
hBitmapIn = (HBITMAP)::LoadImage(hInstResource, MAKEINTRESOURCE(nBitmapIn), IMAGE_BITMAP, 0, 0, 0);
MAKEINTRESOURCE宏的定义:
#endif /* UNICODE */#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
MAKEINTRESOURCE宏将一个整型数强制类型转换成一个字符串指针,这个指针就真的指向一个字符串吗?
我看资源文件里的资源ID,每个整型数都是有序递增的,难道每个字符串的地址都恰好相差1?这不可能吧。
谁能帮我解释一下?谢谢!
// Load bitmap In
hBitmapIn = (HBITMAP)::LoadImage(hInstResource, MAKEINTRESOURCE(nBitmapIn), IMAGE_BITMAP, 0, 0, 0);
MAKEINTRESOURCE宏的定义:
#endif /* UNICODE */#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
The MAKEINTRESOURCE macro converts an integer value to a resource type compatible with Win32 resource-management functions. This macro is used in place of a string containing the name of the resource.
不能把它和常规的字符串指针对应起来,这可能表明相关的资源管理器中只是把这个当作一个索引。
你所说的"我看资源文件里的资源ID,每个整型数都是有序递增的,难道每个字符串的地址都恰好相差1?这不可能吧"
资源ID 本身是 int 型,系统为其编号时,每个整形数都是有序递增很合理呀, 但是这并不说明,字符串的地址是有序递增的。如:
char *V1 = 'a';
char *V2 = 'b';你能确定 *VI - *V2 的值吗??