以下示例将对话框资源从一个可执行文件HAND.EXE复制到另一个FOOT.EXE,步骤如下:
1.LoadLibrary函数加载可执行文件HAND.EXE。
2.FindResource和LoadResource功能从文件中找到并加载名为“If”的对话框资源。
3.LockResource函数返回一个指向对话框资源数据的指针。
4.BeginUpdateResource功能打开一个更新句柄FOOT.EXE。
5.UpdateResource功能将对话框资源从HAND.EXE复制到FOOT.EXE。
6.EndUpdateResource功能完成更新。
以下代码实现这些步骤。
HRSRC hResLoad; //处理加载的资源
HANDLE hExe; //处理现有的.EXE文件
HRSRC hRes; //手柄/ PTR。到res信息。在女巫
HANDLE hUpdateRes; //更新资源句柄
char *lpResLock; //指向资源数据的指针
BOOL result;
//加载包含您要复制的对话框的.EXE文件。
hExe = LoadLibrary("hand.exe");
if (hExe == NULL) {
ErrorHandler("Could not load exe.");
}
//找到.EXE文件中的对话框资源。
hRes = FindResource(hExe, "AboutBox", RT_DIALOG);
if (hRes == NULL) {
ErrorHandler("Could not locate dialog box.");
}
//将对话框加载到全局内存中。
hResLoad = LoadResource(hExe, hRes);
if (hResLoad == NULL) {
ErrorHandler("Could not load dialog box.");
}
//将对话框锁定到全局内存中。
lpResLock = LockResource(hRes);
if (lpResLock == NULL) {
ErrorHandler("Could not lock dialog box.");
}
//打开要添加对话框资源的文件。
hUpdateRes = BeginUpdateResource("foot.exe", FALSE);
if (hUpdateRes == NULL) {
ErrorHandler("Could not open file for writing.");
}
//将对话框资源添加到更新列表。
result = UpdateResource(hUpdateRes, //更新资源句柄
RT_DIALOG, //更改对话框资源
"AboutBox", //对话框名称
MAKELANGID(LANG_NEUTRAL,
SUBLANG_NEUTRAL), //中立语言ID
lpResLock, // PTR资源信息
SizeofResource(hExe, hRes)); //资源信息大小
if (result == FALSE) {
ErrorHandler("Could not add resource.");
}
//将更改写入FOOT.EXE,然后关闭它。
if(!EndUpdateResource(hUpdateRes,FALSE)){
ErrorHandler("Could not write changes to file.");
}
// 清理。
if(!FreeLibrary(hExe)){en
ErrorHandler("Could not free executable.");
}