我在一个DLL中使用了一个WebBrowser控件,同时我在小程序中调用这个DLL的,但是里面的WebBrowser控件,就是不能工作。
步骤如下:
首先,我建立一个DLL。
在这个DLL中,我有一个CDialog,
在这个Dialog中,我加载了一个WebBrowser控件,和一个按钮控件
CWebBrowser2 m_IE;
CButton Button1;在这个按钮点击事件中,我调用这个WebBrowser控件,打开一个网页。
void CMainDlg::OnButton1()
{
::COleVariant tmp;
::COleVariant tmpstrUrl("http://www.google.com");
this->m_IE.Navigate2(strUrl,tmp,tmp,tmp,tmp);
}然后我再一个小应用程序中,调用这个DLL
void CTestDlgDlg::OnButton1()
{
m_hLibrary = ::AfxLoadLibrary("testdll.dll");
}我打开了这个DLL中的Dialog。
但是,我点击按钮打开网页的时候,却一直没有反应。有大侠能帮我解决这个问题吗?
我再小应用程序中,用和在DLL中同样的方法,调用WebBrowser控件,是正确的。这让我很迷茫。
请各位大侠帮忙啊!不管是,帮忙解决问题,还是帮忙顶帖子,都万分感激!(一定给分!)
步骤如下:
首先,我建立一个DLL。
在这个DLL中,我有一个CDialog,
在这个Dialog中,我加载了一个WebBrowser控件,和一个按钮控件
CWebBrowser2 m_IE;
CButton Button1;在这个按钮点击事件中,我调用这个WebBrowser控件,打开一个网页。
void CMainDlg::OnButton1()
{
::COleVariant tmp;
::COleVariant tmpstrUrl("http://www.google.com");
this->m_IE.Navigate2(strUrl,tmp,tmp,tmp,tmp);
}然后我再一个小应用程序中,调用这个DLL
void CTestDlgDlg::OnButton1()
{
m_hLibrary = ::AfxLoadLibrary("testdll.dll");
}我打开了这个DLL中的Dialog。
但是,我点击按钮打开网页的时候,却一直没有反应。有大侠能帮我解决这个问题吗?
我再小应用程序中,用和在DLL中同样的方法,调用WebBrowser控件,是正确的。这让我很迷茫。
请各位大侠帮忙啊!不管是,帮忙解决问题,还是帮忙顶帖子,都万分感激!(一定给分!)
和
CoInitialize都用了吗?
AfxEnableControlContainer() ;
::AfxOleInit();
CoInitialize(NULL) ;
这些在dll中全加。还是没有解决问题。
LoadLibrary时就直接显示了这个Dialog?使用的DoModal方法?
可能需要进入消息循环过程,让WebBrowsser控件可以处理后续动作。
{
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
AFX_MANAGE_STATE(AfxGetStaticModuleState());
AfxEnableControlContainer() ;
::AfxOleInit();
CoInitialize(NULL) ;
COleObjectFactory::RegisterAll();
CMainDlg dlg ;
dlg.DoModal() ;
return TRUE;
}
大家可以试试看。 就是这么奇怪。
我试过了,是可以的
你如何做的? 能不能发个例子过来. [email protected]