LoadString()函数使用技巧:
该函数声明的原型为int LoadString( HINSTANCE hInstance, UINT uID,
LPTSTR lpBuffer, int cchBufferMax );
其中第三个参数是一个指向接收Load内容的缓冲区的指针,
当我们仅仅需要把字串从资源中取出来而并不需要改变的时候就有一个后门可用:
我们把参数lpBuffer设置为NULL,这样函数就会返回一个指针,我是这样用的:
SHLoadDIBitmap((LPCTSTR)LoadString(g_hInst,FileName[1],NULL,0));
我们只能引用而不能改变这个字符串,除非你另外申请一块内存把它复制进去。
使用这个功能的时候要#include <winbase.h>,还要在资源文件的编译命令行中增加-n选项
具体操作是在vs2005的“解决方案资源管理器”中右击.rc文件,打开属性页,在
配置属性->资源->命令行 中增加附加选项“-n”