C++资源文件初使用[C++菜鸟]

起因

  项目中需要可能变动的一些映射关系,而且是封装成独立的库——一个dll文件。

      思路:把excel文件导出成.csv文件,当作资源加载到项目里,读取后拿到全部的字符,再分割处理。

添加资源

      VS2013里添加资源  在所选项目上右键-添加-资源,弹出的窗口里选择-导入,添加我的.csv文件,资源类型是"csv",点击确定

     这时项目里 会有个 resource1.h 文件,里面有类似这样的代码:

#define IDR_CSV1 101
#define IDR_CSV2 102

这里,101 ,102 就是你添加的资源的id

资源使用      

 

//加载资源
string UseCustomResource(int rcId)
{
    //定位自定义资源,如果是从本模块定位资源,也可将句柄简单地置为NULL即可
    //HMODULE phexmodule = GetModuleHandle(L"PCommServerHandler.dll");
    HMODULE phexmodule = LoadLibrary(L"PCommServerHandler.dll");
    HRSRC hRsrc = FindResource(phexmodule, MAKEINTRESOURCE(rcId), TEXT("csv"));    

    if (NULL == hRsrc)
        return "rcError1";
   //获取资源的大小
   DWORD dwSize = SizeofResource(phexmodule, hRsrc);
    if (0 == dwSize)
        return "rcError2";
    //加载资源
    HGLOBAL hGlobal = LoadResource(phexmodule, hRsrc);
    if (NULL == hGlobal)
        return "rcError3";
    //锁定资源
    LPVOID pBuffer = LockResource(hGlobal);
    if (NULL == pBuffer)
        return "rcError4";
    
    string  s=(char * &)pBuffer;// LPVOID  ---> String        
    s=s.substr(0,dwSize); //去除各种文件的附加信息。
    return s;
}
加载资源,C++

  调用就很简单一句:string fileTxt=UseCustomResource(101);  

      拿到的文本做进一步分割处理,加载到map里,就可以使用了,over。

读取excel

     这里是一个.csv文件的读写,简单明了:   http://blog.csdn.net/zhongjling/article/details/49818151

 

posted @ 2016-12-02 17:32  北落师门α  阅读(6644)  评论(0编辑  收藏  举报