m_ctrlWeb.Navigate(_T("about:blank"), NULL, NULL, NULL,NULL);
m_ctrlWeb.SetDesignMode(TRUE);......LPDISPATCH lpDisp = NULL;
IWebBrowser2* lpWB = NULL;
......
if(SUCCEEDED(lpDisp->QueryInterface(IID_IWebBrowser2, (void**)&lpWB)))
{
lpWB->ExecWB(OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT,NULL, NULL);
}保存不了在编辑状态加进去的内容,仍然是blank的内容。请高手指点。
m_ctrlWeb.SetDesignMode(TRUE);......LPDISPATCH lpDisp = NULL;
IWebBrowser2* lpWB = NULL;
......
if(SUCCEEDED(lpDisp->QueryInterface(IID_IWebBrowser2, (void**)&lpWB)))
{
lpWB->ExecWB(OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT,NULL, NULL);
}保存不了在编辑状态加进去的内容,仍然是blank的内容。请高手指点。
typedef void* HHTMLWND;
typedefvoid* HHTMLSEL;
//得到CHtmlView中具有焦点的Input Text,hWnd是WebBroswer控件的窗口句柄
HHTMLWND GetActiveHtmlTextCtrlHandle(HWND hWnd)
{
IHTMLDocument2* pDoc2 = NULL;
LRESULT lRes;
HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
::SendMessageTimeout(hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
if ( pfObjectFromLresult != NULL )
{
HRESULT hr;
IHTMLDocument2* pDoc;
hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument, 0, (void**)&pDoc);
if ( SUCCEEDED(hr) )
{
CComPtr<IDispatch> spDisp;
CComQIPtr<IHTMLWindow2> spWin;
pDoc->get_Script( &spDisp );
pDoc->Release();
spWin = spDisp;
spWin->get_document( &pDoc2);
while(pDoc2)
{
IHTMLElement* pElement;
if(SUCCEEDED(pDoc2->get_activeElement(&pElement)))
{
pDoc2->Release();
pDoc2 = NULL;CComBSTR tagName;
pElement->get_tagName(&tagName);
CString str = tagName;
str.MakeUpper();
if (str == "FRAME" || str == "IFRAME")
{
HRESULT hr;
IHTMLWindow2 *pHTMLWindow;
IHTMLFrameBase2* pHTMLFrameBase2;
hr =pElement->QueryInterface(IID_IHTMLFrameBase2, (void**)&pHTMLFrameBase2);
pElement->Release();
hr = pHTMLFrameBase2->get_contentWindow(&pHTMLWindow);
pHTMLFrameBase2->Release();
hr = pHTMLWindow->get_document(&pDoc2);}
else
{
VARIANT_BOOL bText;
pElement->get_isTextEdit(&bText);
if (bText == VARIANT_TRUE)
{
return pElement;}
else
pElement->Release();
}
}
}
}
}
::FreeLibrary( hInst );
return NULL;
}
//得到input text的文本
INT GetActiveHtmlText(HHTMLWND hWnd, LPTSTR& lpText, BOOL& bDel)
{
IHTMLElement* pElement = (IHTMLElement* )hWnd;
HRESULT hr;
BSTR value;
IHTMLInputTextElement* pHTMLInputTextElement;
hr = pElement->QueryInterface(IID_IHTMLInputTextElement, (void**)&pHTMLInputTextElement);
if (SUCCEEDED(hr))
{
pHTMLInputTextElement->get_value(&value);
pHTMLInputTextElement->Release();
}
else
{
IHTMLTextAreaElement* pHTMLTextAreaElement;
hr = pElement->QueryInterface(IID_IHTMLTextAreaElement,
(void**)&pHTMLTextAreaElement);
if (SUCCEEDED(hr))
{
pHTMLTextAreaElement->get_value(&value);
pHTMLTextAreaElement->Release();
}
}
INT nLen = SysStringLen(value);
#ifdef _UNICODE
lpText = new WCHAR[nLen+1];
wcscpy(lpText, value);
#else
lpText = new CHAR[2*nLen+1];
WideCharToMultiByte(936, 0, value, -1, lpText, 2*nLen+1, NULL, NULL);
#endif
SysFreeString(value);
bDel = TRUE;
return 0;
}
LPDISPATCH lpDispatch = m_pHtml->GetHtmlDocument();
IHTMLDocument2* pDoc2 = NULL;
IHTMLElementCollection* pElementCol=NULL;
lpDispatch->QueryInterface(IID_HTMLDocument2, (VOID**)&pDoc2);
pDoc2 ->get_all(&pElementCol); LONG iCount=0;
if ( pElementCol->get_length(&iCount)<0 )
return FALSE; for ( int i=0; i<iCount; i++ )
{
VARIANT id, index;
V_VT(&id) = VT_I4;
V_I4(&id) = i;
V_VT(&index) = VT_I4;
V_I4(&index) = 0; IDispatch* pDispatch=NULL;
if ( pElementCol->item(id, index, &pDispatch)==0 )
{
IHTMLElement* pElement=NULL;
pDispatch->QueryInterface(IID_IHTMLElement,(void**)&pElement);
BSTR value;
IHTMLInputTextElement* pInputElement=NULL;
if ( pDispatch->QueryInterface(IID_IHTMLInputTextElement,(void**)&pInputElement)==0)
{
pHTMLInputTextElement->get_value(&value);
pHTMLInputTextElement->Release();
这个就是
CString strVulue = value;
}
}
}