如何在程序运行过程中装卸资源文件? 您提出这么好的问题是CSDN的福气,也是大家的福气,尽管没人回答得了,但您总不至于不结贴吧?既然一个回答的都没有,您就无法结贴了。我帮你UP吧,你只要在结贴的时候给我所有的分。万一碰上高人能回答了您的问题,那时候给我一半就可以了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 经过这几天的学习,我大致掌握了一些知识,在这里共享一下学习成果。我使用的是c语言的格式,但是由于调用的都是api,所以和delphi里的使用是一样的。在这里要感谢诸位尤其是西门吹水的提示。不过我还有遗留的问题,就是如何使用dll文件中资源,比如菜单。 HINSTANCE m_hLangDLL3; // handle to LoadLibrary from .DLL file HRSRC hResource; // handle for FindResource HGLOBAL hMem; // handle for LoadResource LPVOID lpResource; // address of resource data // ::FreeLibrary("Chinese.dll"); // Load the file from which to copy the resource. // 获取应用程序.EXE或dll的文件句柄, // 该句柄用于在.EXE或dll文件中寻找资源 m_hLangDLL3 = ::LoadLibrary("English.dll"); //第一个参数是模块句柄 //第二个是要查找的资源名字,如"MYDIALOG" //第三个是资源类型 //返回该资源句柄 //LoadResouce以该句柄为参数装入资源 //寻找具有指定资源ID和指定资源类型的资源文件中的资源位置,返回值为有名称的资源 //在动态链接库中查找资源类型为RT_MENU,资源名为128的资源 hResource = ::FindResource(m_hLangDLL3, MAKEINTRESOURCE(128), RT_MENU); if (hResource == NULL) AfxMessageBox("Error!"); // Load and lock the resource directory. // first parameter: resource-module handle // second parameter: resource handle // 将该资源装入内存 // 返回值标识了用于接受资源数据的全局数据块 hMem = ::LoadResource(m_hLangDLL3, hResource); if (hMem == NULL) { FreeResource(hResource); AfxMessageBox("Error!"); } //锁定该资源 //锁定hg所标定的内存块,并返回所标定内存块的虚拟内存地址 //返回值指向该资源开始处的第一个字节 lpResource = ::LockResource(hMem); if (lpResource == NULL) { FreeResource(hResource); AfxMessageBox("Error!"); } //若上述四步中的任何一步发生问题,则返回并释放相应的内存。 //接下去要做的事情就是根据文件数据类型进行数据加载 //....... //举例 //如何loadmenu并体现出来?请提示 UnlockResource(hMem); FreeResource(hMem); HINSTANCE m_hLangDLL3; // handle to LoadLibrary from .DLL file HRSRC hResource; // handle for FindResource HGLOBAL hMem; // handle for LoadResource LPVOID lpResource; // address of resource data // ::FreeLibrary("Chinese.dll"); // Load the file from which to copy the resource. // 获取应用程序.EXE或dll的文件句柄, // 该句柄用于在.EXE或dll文件中寻找资源 m_hLangDLL3 = ::LoadLibrary("English.dll"); //第一个参数是模块句柄 //第二个是要查找的资源名字,如"MYDIALOG" //第三个是资源类型 //返回该资源句柄 //LoadResouce以该句柄为参数装入资源 //寻找具有指定资源ID和指定资源类型的资源文件中的资源位置,返回值为有名称的资源 //在动态链接库中查找资源类型为RT_MENU,资源名为128的资源 hResource = ::FindResource(m_hLangDLL3, MAKEINTRESOURCE(128), RT_MENU); if (hResource == NULL) AfxMessageBox("Error!"); // Load and lock the resource directory. // first parameter: resource-module handle // second parameter: resource handle // 将该资源装入内存 // 返回值标识了用于接受资源数据的全局数据块 hMem = ::LoadResource(m_hLangDLL3, hResource); if (hMem == NULL) { FreeResource(hResource); AfxMessageBox("Error!"); } //锁定该资源 //锁定hg所标定的内存块,并返回所标定内存块的虚拟内存地址 //返回值指向该资源开始处的第一个字节 lpResource = ::LockResource(hMem); if (lpResource == NULL) { FreeResource(hResource); AfxMessageBox("Error!"); } //若上述四步中的任何一步发生问题,则返回并释放相应的内存。 //接下去要做的事情就是根据文件数据类型进行数据加载 //....... //举例 //如何loadmenu并体现出来?请提示 UnlockResource(hMem); FreeResource(hMem); 老 forlande() ,把分给我呀! 远程连接问题 出什么样的笔试题目可以考察一个人对VB的熟悉程度?我已经没分了,可以免费帮忙吗? 请教高手!!! sql表导出成excel(100分) <font color=red>如何通过webbrowse控件获取网页源代码</font> 各位大侠,请问下,如何在VB对话框内实现一个弹出菜单??谢过了!!! Data控件的DatabaseName的疑问 我能行吗? 制作软件 三轴传感器串口数据用VB6如何解析问题,求助各位大神 条形码的控件是什么?? 关于winsock编程的问题
HRSRC hResource; // handle for FindResource
HGLOBAL hMem; // handle for LoadResource
LPVOID lpResource; // address of resource data // ::FreeLibrary("Chinese.dll"); // Load the file from which to copy the resource.
// 获取应用程序.EXE或dll的文件句柄,
// 该句柄用于在.EXE或dll文件中寻找资源
m_hLangDLL3 = ::LoadLibrary("English.dll"); //第一个参数是模块句柄
//第二个是要查找的资源名字,如"MYDIALOG"
//第三个是资源类型
//返回该资源句柄
//LoadResouce以该句柄为参数装入资源
//寻找具有指定资源ID和指定资源类型的资源文件中的资源位置,返回值为有名称的资源
//在动态链接库中查找资源类型为RT_MENU,资源名为128的资源
hResource = ::FindResource(m_hLangDLL3, MAKEINTRESOURCE(128), RT_MENU);
if (hResource == NULL)
AfxMessageBox("Error!");
// Load and lock the resource directory.
// first parameter: resource-module handle
// second parameter: resource handle
// 将该资源装入内存
// 返回值标识了用于接受资源数据的全局数据块
hMem = ::LoadResource(m_hLangDLL3, hResource);
if (hMem == NULL)
{
FreeResource(hResource);
AfxMessageBox("Error!");
} //锁定该资源
//锁定hg所标定的内存块,并返回所标定内存块的虚拟内存地址
//返回值指向该资源开始处的第一个字节
lpResource = ::LockResource(hMem);
if (lpResource == NULL)
{
FreeResource(hResource);
AfxMessageBox("Error!");
} //若上述四步中的任何一步发生问题,则返回并释放相应的内存。
//接下去要做的事情就是根据文件数据类型进行数据加载
//.......
//举例
//如何loadmenu并体现出来?请提示
UnlockResource(hMem);
FreeResource(hMem);
HRSRC hResource; // handle for FindResource
HGLOBAL hMem; // handle for LoadResource
LPVOID lpResource; // address of resource data // ::FreeLibrary("Chinese.dll"); // Load the file from which to copy the resource.
// 获取应用程序.EXE或dll的文件句柄,
// 该句柄用于在.EXE或dll文件中寻找资源
m_hLangDLL3 = ::LoadLibrary("English.dll"); //第一个参数是模块句柄
//第二个是要查找的资源名字,如"MYDIALOG"
//第三个是资源类型
//返回该资源句柄
//LoadResouce以该句柄为参数装入资源
//寻找具有指定资源ID和指定资源类型的资源文件中的资源位置,返回值为有名称的资源
//在动态链接库中查找资源类型为RT_MENU,资源名为128的资源
hResource = ::FindResource(m_hLangDLL3, MAKEINTRESOURCE(128), RT_MENU);
if (hResource == NULL)
AfxMessageBox("Error!");
// Load and lock the resource directory.
// first parameter: resource-module handle
// second parameter: resource handle
// 将该资源装入内存
// 返回值标识了用于接受资源数据的全局数据块
hMem = ::LoadResource(m_hLangDLL3, hResource);
if (hMem == NULL)
{
FreeResource(hResource);
AfxMessageBox("Error!");
} //锁定该资源
//锁定hg所标定的内存块,并返回所标定内存块的虚拟内存地址
//返回值指向该资源开始处的第一个字节
lpResource = ::LockResource(hMem);
if (lpResource == NULL)
{
FreeResource(hResource);
AfxMessageBox("Error!");
} //若上述四步中的任何一步发生问题,则返回并释放相应的内存。
//接下去要做的事情就是根据文件数据类型进行数据加载
//.......
//举例
//如何loadmenu并体现出来?请提示
UnlockResource(hMem);
FreeResource(hMem);