- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个使用 CHtmlView 的应用程序。新要求意味着我希望能够从类中获取 HTML 源代码以解析特定标记(或者如果可能,只获取标记中的信息)。如果我们使用较新的系统并且我可以使用 CHtmlView::GetSource 但它不存在,这会很好。
我已经在网上进行了相当广泛的搜索,但对大多数 Windows 编程来说都是新手,还没有能够实现任何有用的东西。
因此,如果有人有一个示例说明如何在不使用 GetSource 的情况下从 CHtmlView 中提取 HTML,我将不胜感激。我试过了
BSTR bstr;
_bstr_t * bstrContainer;
HRESULT hr;
IHTMLDocument2 * pDoc;
IDispatch * pDocDisp = NULL;
pDocDisp = this->GetHtmlDocument();
if (pDocDisp != NULL) {
hr = pDocDisp->QueryInterface (IID_IHTMLDocument2, (void**)&pDoc);
if (SUCCEEDED(hr)) {
if (pDoc->toString(&bstr) != S_OK) {
//error...
} else {
bstrContainer = new _bstr_t(bstr);
size = (bstrContainer->length()+1)*2;
realString = new char[size];
strncpy(realString, (char*)(*bstrContainer), size);
}
} else {
//error
}
pDocDisp->Release();
}
但它主要只是给我 realString 中的“[object]”。就像我说的,Windows 新手。
感谢任何帮助。
最佳答案
将此辅助函数添加到您的 CHtmlView 派生类中以检索 html 源。请记住检查此函数返回的 bool 状态,因为当系统资源不足时,com 接口(interface)可能非常不可靠。
/* ============================================== */
BOOL CTest1View::GetHtmlText(CString &strHtmlText)
{
BOOL bState = FALSE;
// get IDispatch interface of the active document object
IDispatch *pDisp = this->GetHtmlDocument();
if (pDisp != NULL)
{ // get the IHTMLDocument3 interface
IHTMLDocument3 *pDoc = NULL;
HRESULT hr = pDisp->QueryInterface(IID_IHTMLDocument3, (void**) &pDoc);
if (SUCCEEDED(hr))
{ // get root element
IHTMLElement *pRootElement = NULL;
hr = pDoc->get_documentElement(&pRootElement);
if (SUCCEEDED(hr))
{ // get html text into bstr
BSTR bstrHtmlText;
hr = pRootElement->get_outerHTML(&bstrHtmlText);
if (SUCCEEDED(hr))
{ // convert bstr to CString
strHtmlText = bstrHtmlText;
bState = TRUE;
SysFreeString(bstrHtmlText);
}
pRootElement->Release();
}
pDoc->Release();
}
pDisp->Release();
}
return bState;
}
关于c++ - 从 CHtmlView (visual studio 6) 检索 HTML 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719345/
我有一个用 MFC 编写的 SDI 应用程序。使用拆分窗口将框架分为 1 行和 2 列。以下是行和列的详细信息(R0C0 表示 Row#0 和 Col#0) R0C0 View 是一个 CFormVi
在我的 MFC 应用程序中,我在 CScrollView 中逐行显示文本。现在的新要求是以 html 格式显示文本(有时是图像),保留所有效果,例如粗体、斜体等。我知道我可以使用 CHtmlView
我正在使用 CHtmlView将来自在线的 HTML 页面显示到我的应用程序中。每当站点/页面尝试加载任何 '.js' 文件或脚本时,它都会抛出 Script Error 对话框并且无法从页面加载一些
我无法在我的 MFC 应用程序中从 CHtmlView 派生的 View 中使用 SVG 进行绘制。但是,当我在记事本中复制相同的源代码并使用 Internet Explorer 打开它时,它正在运行
我有一个需要显示网页的 MFC 应用程序。我通过 CSingleDocTemplate 添加了一个 CHtmlView,它生成一个窗口并正常显示页面,但在运行 javascript 时它会泄漏内存。
这是一个旧的 MFC 应用程序,它实现了一些选项卡式框架窗口。 frame中任何时候都只显示一个CView,切换tab时使用以下代码隐藏旧tab内容显示新内容: oldview->EnableWind
我想知道以下控件和类之间的区别。 Windows 浏览器控件与 CDHtmlDialog 和 CHtmlView。 可见这些东西是用来在UI中添加html内容的基于 Windows 的应用程序。 但是
问题 我已经遇到这个问题好几天了,还没有发现其他人提到过它.. 问题是,当我将系统 dpi 缩放比例设置为 150% 或更高时,我在 CHtmlView 中打开的一些网页会乱七八糟,而使用 IE 或
我们遇到了一个简单但关键的问题:IHTMLDocument2::get_body 在我们的嵌入式浏览器 (CHtmlView) 中适用于 IE7,但不适用于 IE11。我们真的很想开始使用较新的版本,
我正在开发一个使用 CHtmlView 的应用程序。新要求意味着我希望能够从类中获取 HTML 源代码以解析特定标记(或者如果可能,只获取标记中的信息)。如果我们使用较新的系统并且我可以使用 CHtm
我是一名优秀的程序员,十分优秀!