我先大概的描述下
我的程序中有
mfc dll1 添加了一个对话框资源ID:dlg1,对话框上有一个webbrowser控件 添加该控件变量myIE1,导出函数nav1
mfc dll2 添加了一个对话框资源ID:dlg2,对话框上有一个webbrowser控件 添加该控件变量myIE2, 导出函数nav2
mfc 对话框 上面有一个按钮ID:btn1
我做了几个测试
一:单击btn1,调用dll1中的导出函数nav1,窗体显示,并导航到指定网页中,成功!
二:单击btn1, 调用dll2中的导出函数nav2,窗体显示,并导航到指定网页中,成功!
三:单击btn1, 调用dll1中的导出函数nav1,窗体显示导航,调用dll2的导出函数nav2,窗体显示导航
关键是第三个测试
我在btn1的click中开了两个线程
afxbeginthread(thread1,this);
afxbeginthread(thread2,this);
thread1和thread2主要是为了调用两个不同的dll中的导出函数
如
thread1----》nav1
thread2----》nav2
再次强调每个dll的对话框资源中有一个webbrowser控件可是问题就来了,当运行的时候就报错 if (pSite == NULL)
{
TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC);///这个地方报错我看了下我的资源文件是我的dll1中的那个对话框中的那个webbrowser控件的id的值
ASSERT(FALSE);
AfxThrowNotSupportedException();
}
其实就是简单的单击一个按钮让然后开两个线程然后各个线程处理各自的dll对话框
按照理论来说这个应该没有问题的啊
我百度,google,bing都没有找到合适的答案才跑来提问的
到底是什么原因呢,难道webbrowser控件只能在一个进程(强调)中初始化一次
搞不明错误的原因,请高人指点
谢谢
有描述不清楚的地方请指出,谢谢了
我的程序中有
mfc dll1 添加了一个对话框资源ID:dlg1,对话框上有一个webbrowser控件 添加该控件变量myIE1,导出函数nav1
mfc dll2 添加了一个对话框资源ID:dlg2,对话框上有一个webbrowser控件 添加该控件变量myIE2, 导出函数nav2
mfc 对话框 上面有一个按钮ID:btn1
我做了几个测试
一:单击btn1,调用dll1中的导出函数nav1,窗体显示,并导航到指定网页中,成功!
二:单击btn1, 调用dll2中的导出函数nav2,窗体显示,并导航到指定网页中,成功!
三:单击btn1, 调用dll1中的导出函数nav1,窗体显示导航,调用dll2的导出函数nav2,窗体显示导航
关键是第三个测试
我在btn1的click中开了两个线程
afxbeginthread(thread1,this);
afxbeginthread(thread2,this);
thread1和thread2主要是为了调用两个不同的dll中的导出函数
如
thread1----》nav1
thread2----》nav2
再次强调每个dll的对话框资源中有一个webbrowser控件可是问题就来了,当运行的时候就报错 if (pSite == NULL)
{
TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC);///这个地方报错我看了下我的资源文件是我的dll1中的那个对话框中的那个webbrowser控件的id的值
ASSERT(FALSE);
AfxThrowNotSupportedException();
}
其实就是简单的单击一个按钮让然后开两个线程然后各个线程处理各自的dll对话框
按照理论来说这个应该没有问题的啊
我百度,google,bing都没有找到合适的答案才跑来提问的
到底是什么原因呢,难道webbrowser控件只能在一个进程(强调)中初始化一次
搞不明错误的原因,请高人指点
谢谢
有描述不清楚的地方请指出,谢谢了
二:单击btn1, 调用dll2中的导出函数nav2,窗体显示,并导航到指定网页中,成功!
===============================================================================这两个测试,你有没有用到线程来运行nav1或nav2?
也可以说是 线程一 又开一个线程
开了两个线程
线程二 又开一个线程线程中开线程
这样的不知道描述的准确不
谢谢
那么这两个WebBrowser控件用的资源是同一个吗?
而且我也看了不同的dll中的对话框中的资源
他们的id是不一样的
在我的这个程序中第一个对话框中的web控件的id是3000
第二个对话框中的web控件的id是4000没人来吗
谢谢了
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CoInitialize(NULL);
AfxEnableControlContainer();
可以了,可以了
太谢谢你了第一个多谢您的提醒,原来我以前的新建的一个dll忘记初始化了,也就是dll2
第二我以前用的是
exehinst=AfxGetResourceHandle();
AfxSetResourceHandle(theApp.m_hInstance);
也是你提醒我,我还是换回以前的
AFX_MANAGE_STATE(AfxGetStaticModuleState());
结果就出来了
非常感谢
结贴给分
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
我现在才看见你的帖子你可以加QQ:416532793
还有你贴的图片看不到
java我也不会
vc的话可以交流下
好吗?