工作需要,
我为做了一个库,该库重写了一个list空间,我们假设这个库名字就叫做ListLib该库是一个dll。我发现了如下问题:如果我这个dll创建成Regular DLL using shared MFC DLL
或者Regular DLL with MFC statically linked ,
那么我在库中位CListCtrl子类控件所写的OnContextMenu响应函数中Modal一个对话框出来将会失败,如果Modal一个CPropertySheet出来一个属性表就会提示找不到所需资源。但是如果我将这个dll设置成MFC extension DLL 那么问题就能够得到解决。谁能够回复一下这个问题的根本原因是什么?示例代码如下:
void CListCBBCtrl2::OnContextMenu(CWnd* pWnd, CPoint pos)
{
CDlgOne dlg;
dlg.DoModal();
}void CListCtrlCBB::OnContextMenu(CWnd* pWnd, CPoint pos)
{
CPropertySheet sheet;
CPageOne pageone;
sheet.AddPage(&pageone);
sheet.DoModal();
}果dll创建时使用Regular DLL using shared MFC DLL 或者Regular DLL with MFC statically linked
那么dlg.DoModal返回-1
而sheet.DoModal()提示找不到资源。谁能够回复一下我的问题?能不能介绍一下,创建三种不同dll的时候,
他们的资源是如何使用的?
我为做了一个库,该库重写了一个list空间,我们假设这个库名字就叫做ListLib该库是一个dll。我发现了如下问题:如果我这个dll创建成Regular DLL using shared MFC DLL
或者Regular DLL with MFC statically linked ,
那么我在库中位CListCtrl子类控件所写的OnContextMenu响应函数中Modal一个对话框出来将会失败,如果Modal一个CPropertySheet出来一个属性表就会提示找不到所需资源。但是如果我将这个dll设置成MFC extension DLL 那么问题就能够得到解决。谁能够回复一下这个问题的根本原因是什么?示例代码如下:
void CListCBBCtrl2::OnContextMenu(CWnd* pWnd, CPoint pos)
{
CDlgOne dlg;
dlg.DoModal();
}void CListCtrlCBB::OnContextMenu(CWnd* pWnd, CPoint pos)
{
CPropertySheet sheet;
CPageOne pageone;
sheet.AddPage(&pageone);
sheet.DoModal();
}果dll创建时使用Regular DLL using shared MFC DLL 或者Regular DLL with MFC statically linked
那么dlg.DoModal返回-1
而sheet.DoModal()提示找不到资源。谁能够回复一下我的问题?能不能介绍一下,创建三种不同dll的时候,
他们的资源是如何使用的?
解决方案 »
- 关于GetDlgItem(XXX)->UpdateData的一个小问题
- 界面上有一个ComboBox,我想在CBN_DROPDOWN时显示一个对话框,但对话框返回回ComboBox会有一个显示列表的动作,我不想它执行这个动作,怎么办?
- 使用快捷键的时候,如何避免模式对话框重复弹出???
- 打开dsp文件时,提示“内存不足”,打开失败。。。
- 升五角了,散分^_^
- 怎样控制生成文件的版本?
- 新手上路:请教CFormView如何与多个对话框之间关联(切换)?
- 怎样使菜单和工具栏变灰
- 问个关于DLL的问题
- IHTMLDocument2 得到源代码.请教!
- 设置添加VC++计时器
- 如何对已有的控制面板程序增加设置页
在之后的搜索资源的就能正确的从dll中读取,否则就是从exe中读取
{
if (dwReason == DLL_PROCESS_ATTACH)
{
// Extension DLL one-time initialization - do not allocate memory here,
// use the TRACE or ASSERT macros or call MessageBox
if (!AfxInitExtensionModule(extensionDLL, hInstance))
return 0;
//
}
return 1;
}
//使用
HINSTANCE hInstOld = AfxGetResourceHandle(); //save old resource chain
AfxSetResourceHandle(extensionDLL.hModule); //set new resource module
BOOL bRet = !m_menu.LoadMenu(IDR_MENU);
AfxSetResourceHandle(hInstOld); //restore the old resource chain