如题
解决方案 »
- 帮我解答一下error C2027: use of undefined type 'CPrinter'
- 试用软件到期后,卸载重装还是不能用,不知道安装信息保存在哪里。
- 为什么在对话框程序中可连接数据库而在Single document下却显示“指针无效”
- 如何实现已编译的EXE文件内的资源不能被打开?
- odbc接口的数据库在用AddNew是出现"数据库是只读的"错,怎么解决?
- 《ATL internals》和《inside ATL》不是同一本书吧?他们各自的中译名是什么?
- 有没有试过用Windows作为客户端,而linux作为服务器的socket开发。
- 两个编辑框 同时有内容时 显示一个按钮,怎么做,谢谢
- 小弟由基类a派生一个类b,如何在a中相应OnLButtonDown消息 ,b中不响应 ???
- 菲模态对话盒问题,送分50
- 是高人的请进,送分送票子
- 对模式话框中怎样激活键盘消息?
HINSTANCE hInstance, // handle to resource module
UINT uID, // resource identifier
LPTSTR lpBuffer, // resource buffer
int nBufferMax // size of buffer
);
之后FindResource,LoadResource, LockResource
这时候可以得到一个指针,指向字符串资源RT_STRING这种资源是这么存的16个连续id的字符串存成一个RT_STRING字符串的id和RT_STRING资源的id有这样一个对应关系string id(字符串资源的id) resource id(RT_STRING资源的id)
0x0000 ~ 0x000f 1
0x0010 ~ 0x001f 2
0x0020 ~ 0x002f 3也就是说id 为 x 的RT_STRING资源内存放的字符串的id范围是从 x * 16 - 16 到 x * 16 - 1RT_STRING中是16个变长结构体
struct string_block
{
unsigned short length; // sz的长度,按字符计
wchar_t sz [0]; // 不含\0字符
};比方说
void *ptr = LockResource (); // ptr指向RT_STRING资源string_block *pstr = (string_block *)ptr; // pstr指向RT_STRING中第一个字符串ptr = (string_block *)(char *)ptr + sizeof (string_block) + ptr->length + sizeof (wchar_t); // 现在ptr指向RT_STRING中第二个字符串资源。
然后你这样遍历,直到扁历够16个,这个RT_STRING的所有字符串就全遍历到了。
如果ptr->length值为0表明其对应字符串ID的字符串资源不存在。