代码如下:
void CWebFrame::OnNewAddr()
{
ASSERT ( m_pViewMan );
m_wndTabCtrl.Clear();
m_pViewMan->RemoveAllView(); SendResetViewInfo(); DWORD dwViewID = GenerateViewID();
CWebView *pView = m_pViewMan->AddView( dwViewID );
if( pView && ::IsWindow( pView->GetSafeHwnd())){ CString strUrl;
m_dlgwebToolBar.m_EditADD.GetWindowText( strUrl ); CString strText;
g_lanManager.ReadTableString( IDS_CONTROL_WEBLOADING,strText );
m_wndTabCtrl.AddItem(strText, dwViewID );
m_wndTabCtrl.SetActiveViewByID( dwViewID );
m_pViewMan->SetActiveView( dwViewID ); SendCreateViewInfo( dwViewID );
SendActiveViewInfo( dwViewID ); pView->Navigate2( strUrl );
}
调用这段代码,程序没响应。注释掉pView->Navigate2( strUrl )后,就没问题了。为什么?谢谢!!
void CWebFrame::OnNewAddr()
{
ASSERT ( m_pViewMan );
m_wndTabCtrl.Clear();
m_pViewMan->RemoveAllView(); SendResetViewInfo(); DWORD dwViewID = GenerateViewID();
CWebView *pView = m_pViewMan->AddView( dwViewID );
if( pView && ::IsWindow( pView->GetSafeHwnd())){ CString strUrl;
m_dlgwebToolBar.m_EditADD.GetWindowText( strUrl ); CString strText;
g_lanManager.ReadTableString( IDS_CONTROL_WEBLOADING,strText );
m_wndTabCtrl.AddItem(strText, dwViewID );
m_wndTabCtrl.SetActiveViewByID( dwViewID );
m_pViewMan->SetActiveView( dwViewID ); SendCreateViewInfo( dwViewID );
SendActiveViewInfo( dwViewID ); pView->Navigate2( strUrl );
}
调用这段代码,程序没响应。注释掉pView->Navigate2( strUrl )后,就没问题了。为什么?谢谢!!
解决方案 »
- 关于命令行参数问题
- 请教如何使用类:MicrosoftDNS_ResourceRecord
- 哪位仁兄告诉我Numega TrueTime的下载地址,给100分
- 我想用vc++模拟一个线程池,应该怎么做?
- CListCtrl如何用程序实现象鼠标选择一样的将焦点定位到指定的行。
- 我的机器有多个IP地址,我如何指定我创建的SOCKET的本地地址是其中某个IP?
- CreateFile 读写逻辑盘出错,物理盘没有问题。。
- 主引导记录工作原理(源码分析很COOL)
- 【求助】关于ON_NOTIFY_REFLECT在DLL中的响应
- 关于给目标窗口(后台)发送虚拟按键的问题
- 多线程程序真难调试啊。
- 拜求vc ado操作另一台电脑上共享access问题(只连接一次)?当网络由正常到断开时,数据库操作为什么有时抛出异常,但有时不抛出异常?
void CWebView::OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel)
{
// TODO: Add your specialized code here and/or call the base class
if( baPostedData.GetSize() > 0 ){
m_BrowseContent.strUrl = lpszURL;
m_BrowseContent.nFlags = nFlags;
if( lpszTargetFrameName )
m_BrowseContent.strTargetFrameName = lpszTargetFrameName;
else
m_BrowseContent.strTargetFrameName = _TEXT("");
if( lpszHeaders )
m_BrowseContent.strHeader = lpszHeaders;
else
m_BrowseContent.strHeader = _TEXT("");
m_BrowseContent.arrByts.Copy( baPostedData );
}
MTR_WriteChatData( lpszURL, 4);
SetSilent(TRUE);
CHtmlView::OnBeforeNavigate2(lpszURL, nFlags, lpszTargetFrameName, baPostedData, lpszHeaders, pbCancel);
}void CWebView::OnNavigateComplete2(LPCTSTR strURL)
{
// TODO: Add your specialized code here and/or call the base class
CString strUrl = GetLocationURL();
if( m_strOldUrl != strUrl ){ m_strOldUrl = strUrl; if( m_strOldUrl == m_BrowseContent.strUrl ){ UINT unTotalLen = m_BrowseContent.strUrl.GetLength()+\
m_BrowseContent.strHeader.GetLength()+\
m_BrowseContent.strTargetFrameName.GetLength()+\
m_BrowseContent.arrByts.GetSize();
UINT unSize = sizeof(STRUCT_WEB_VIEWDATA)+unTotalLen; PBYTE pbBuffer = new BYTE[unSize];
if( pbBuffer ){
STRUCT_WEB_VIEWDATA *pData = (STRUCT_WEB_VIEWDATA*)pbBuffer;
pData->wTotalLen = (WORD)unTotalLen;
pData->dwFlags = m_BrowseContent.nFlags;
pData->wHeaderLen = m_BrowseContent.strHeader.GetLength();
pData->wUrlLen = m_BrowseContent.strUrl.GetLength();
pData->wTargetFrameNameLen = m_BrowseContent.strTargetFrameName.GetLength();
pData->wPostDataLen = m_BrowseContent.arrByts.GetSize();
PBYTE pbTemp = pbBuffer+sizeof(STRUCT_WEB_VIEWDATA);
if( pData->wUrlLen > 0 ){
CopyMemory( pbTemp,m_BrowseContent.strUrl,pData->wUrlLen );
pbTemp += pData->wUrlLen;
}
if( pData->wTargetFrameNameLen > 0 ){
CopyMemory( pbTemp,m_BrowseContent.strTargetFrameName,pData->wTargetFrameNameLen );
pbTemp += pData->wTargetFrameNameLen;
}
if( pData->wHeaderLen > 0 ){
CopyMemory( pbTemp,m_BrowseContent.strHeader,pData->wHeaderLen );
pbTemp += pData->wHeaderLen;
}
if( pData->wPostDataLen > 0 ){
CopyMemory( pbTemp,m_BrowseContent.arrByts.GetData(),pData->wPostDataLen );
}
CWebFrame *pFrame = g_pMainFrm->m_pFrmHtml;
if( pFrame && pFrame->IsKindOf( RUNTIME_CLASS(CWebFrame))){
pFrame->SendViewData( m_dwViewID,pbBuffer,unSize );
}
delete[] pbBuffer;
}
}else{ UINT unSize = sizeof(STRUCT_WEB_VIEWDATA)+m_strOldUrl.GetLength();
PBYTE pbBuffer = new BYTE[ unSize ];
if( pbBuffer ){
STRUCT_WEB_VIEWDATA *pData = (STRUCT_WEB_VIEWDATA*)pbBuffer;
pData->wTotalLen = (WORD)m_strOldUrl.GetLength();
pData->dwFlags = 0;
pData->wHeaderLen = 0;
pData->wUrlLen = (WORD)m_strOldUrl.GetLength();
pData->wTargetFrameNameLen = 0;
pData->wPostDataLen = 0; CopyMemory( pbBuffer+sizeof(STRUCT_WEB_VIEWDATA),m_strOldUrl,m_strOldUrl.GetLength() ); CWebFrame *pFrame = g_pMainFrm->m_pFrmHtml;
if( pFrame && pFrame->IsKindOf( RUNTIME_CLASS(CWebFrame))){
pFrame->SendViewData( m_dwViewID,pbBuffer,unSize );
} delete[] pbBuffer;
}
}
} //禁止脚本错误
LPDISPATCH pDispDoc = NULL;
IHTMLDocument2 *pHTMLDoc = NULL;
IHTMLWindow2 *pWnd = NULL;
IHTMLWindow2 *pWndParent = NULL;
try{
pDispDoc = GetHtmlDocument();
if (pDispDoc)
{
if (SUCCEEDED(pDispDoc->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc))
&& pHTMLDoc != NULL
&& SUCCEEDED(pHTMLDoc->get_parentWindow(&pWnd))
&& pWnd != NULL
&& SUCCEEDED(pWnd->get_parent(&pWndParent))
&& pWndParent != NULL)
{
_variant_t varFuc = CFunctionObject<CWebView>::CreateEventFunctionObject(
NULL,
NULL, 0);
pWnd->put_onerror(varFuc);
pWndParent->put_onerror(varFuc);
}
}
}
catch(...)
{
ASSERT(0);
}
try{
SAFERELEASE(pWndParent);
SAFERELEASE(pWnd);
SAFERELEASE(pHTMLDoc);
SAFERELEASE(pDispDoc);
}
catch(...)
{
ASSERT(0);
} CHtmlView::OnNavigateComplete2(strURL); ModifyStyleEx (WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE,
0, SWP_FRAMECHANGED);
SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOZORDER
| SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}