Phi*_*oth 3 resources winapi visual-c++
我正在使用包含许多HTML资源的Visual Studio C++项目.它们由一个如下所示的方法加载:
LPCTSTR loadHTML(HMODULE hModule, LPCTSTR sResourceName)
{
HRSRC hResource = FindResource(hModule, sResourceName, RT_HTML);
if(!hResource)
return 0;
HGLOBAL hResourceData = LoadResource(hModule, hResource);
if(!hResourceData)
return 0;
return reinterpret_cast<LPCTSTR>(LockResource(hResourceData));
}
Run Code Online (Sandbox Code Playgroud)
大多数时候,这很好.但有时,它会返回与另一个资源连接的资源.当发生这种情况时,它在该构建中是一个持久性问题.我可以通过向相关资源添加一些空行然后重建项目来"修复"它.即使资源没有改变,它也会定期发生.
我很想知道为什么会发生这种情况.还有其他人遇到过吗?我的资源是否有一些特殊的东西导致问题?我的代码错了吗?
可悲的是,我不愿在这里发布示例资源; 它们很长,这是专有软件.
你的资源特有的是你期望它们被零终止.iirc资源部分在16字节边界上对齐,这意味着每当"blob"是16字节长的倍数时,资源和下一个之间就不会有任何分隔字节.
确保使用终止零字符保存资源,或使用SizeofResource确定资源的结束位置.