Memo中的html代码怎么直接用TWebBrowser打开?

hyz_cs 2013-12-02 11:14:04
不想让用户看到html代码所以不想保存成文件再用TWebBrowser打开.
...全文
665 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝龙哥 2013-12-04
  • 打赏
  • 举报
回复
这些方式好像不支持html代码中的文件的显示的
hyz_cs 2013-12-04
  • 打赏
  • 举报
回复
引用 16 楼 ccrun 的回复:
CrnSetHtmlContent(spDoc, Memo1->Lines->Text.c_str());


传个示例html. 把扩展名.jpg改成.html



ccrun.com 2013-12-04
  • 打赏
  • 举报
回复
引用 17 楼 hyz_cs 的回复:
[quote=引用 16 楼 ccrun 的回复:]
CrnSetHtmlContent(spDoc, Memo1->Lines->Text.c_str());
_tcslen 要包含哪个头文件?[/quote] #include <stdio.h> #include <tchar.h>
sololie 2013-12-03
  • 打赏
  • 举报
回复
改一下,给html分配内存,不然调试运行时SafeArrayDestroy释放失败会蹦出CPU窗口 v->bstrVal = SysAllocString(html);
sololie 2013-12-03
  • 打赏
  • 举报
回复
直接往里面写Write就可以了啊
hyz_cs 2013-12-03
  • 打赏
  • 举报
回复
引用 9 楼 jiangsheng 的回复:
不让用户看?能防止用户去翻IE缓存目录不?
知道去翻IE缓存目录的用户根本就不需要去翻这些目录.
hyz_cs 2013-12-03
  • 打赏
  • 举报
回复
引用 8 楼 sololie 的回复:
关于SafeArrayCreate,看MSDN
http://msdn.microsoft.com/en-us/library/windows/desktop/ms221234(v=vs.85).aspx


在IDE中运行时




脱离IDE运行时

蒋晟 2013-12-03
  • 打赏
  • 举报
回复
不让用户看?能防止用户去翻IE缓存目录不?
hyz_cs 2013-12-03
  • 打赏
  • 举报
回复
引用 16 楼 ccrun 的回复:
CrnSetHtmlContent(spDoc, Memo1->Lines->Text.c_str());
_tcslen 要包含哪个头文件?
ccrun.com 2013-12-03
  • 打赏
  • 举报
回复
CrnSetHtmlContent(spDoc, Memo1->Lines->Text.c_str());
ccrun.com 2013-12-03
  • 打赏
  • 举报
回复
不要把简单的事情复杂化.
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    CppWebBrowser1->Navigate(L"about:blank");
}

#include <mshtml.h>

//---------------------------------------------------------------------------
BOOL __stdcall CrnSetHtmlContent(IHTMLDocument2 *spDoc, LPCTSTR lpText)
{
    BOOL bResult = FALSE;

    if (!spDoc)
        return bResult;

    IStream *pStream;
    IPersistStreamInit *psi;
    size_t nLen = _tcslen(lpText);

    HGLOBAL hHTMLText = ::GlobalAlloc(GPTR, nLen * sizeof(TCHAR) + 1);
    if (!hHTMLText)
        return bResult;

    ::CopyMemory(hHTMLText, lpText, nLen * sizeof(TCHAR));
    HRESULT hr = ::CreateStreamOnHGlobal(hHTMLText, true, &pStream);

    if (SUCCEEDED(hr))
    {
        hr = spDoc->QueryInterface(IID_IPersistStreamInit, (void **)&psi);
        if (SUCCEEDED(hr))
        {
            hr = psi->Load(pStream);

            bResult = SUCCEEDED(hr);

            psi->Release();
        }
        pStream->Release();
    }
    ::GlobalFree(hHTMLText);

    return bResult;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    IHTMLDocument2 *spDoc = NULL;
    HRESULT hr = CppWebBrowser1->Document->QueryInterface(
            ::IID_IHTMLDocument2, (void **)&spDoc);

    if (SUCCEEDED(hr))
    {
        CrnSetHtmlContent(spDoc, TEXT("YY挖卡卡"));
        spDoc->Release();
    }
}
sololie 2013-12-03
  • 打赏
  • 举报
回复
sololie 2013-12-03
  • 打赏
  • 举报
回复

    #include <mshtml.h>
    //....
    cpwbrwsr1->Navigate(L"about:blank");
    VARIANT* v;
    IHTMLDocument2* dom = NULL;
    (void*)dom = cpwbrwsr1->Document;
    tagSAFEARRAYBOUND sab[1];
    sab[0].lLbound = 0;
    sab[0].cElements = 1;
    tagSAFEARRAY* sa = SafeArrayCreate(VT_VARIANT, 1, sab);

    HRESULT hr = SafeArrayAccessData(sa, (LPVOID*)&v);
    if (SUCCEEDED(hr))
    {
       BSTR html = L"<H3>hello web...</H3>"; // HTML内容
       v->vt = VT_BSTR;
       v->bstrVal = html;
       SafeArrayUnaccessData(sa);
       dom->write(sa);
    }
    SafeArrayDestroy(sa);
    dom->Release();
    //....
sololie 2013-12-03
  • 打赏
  • 举报
回复
如果你发现第二次点击写入HTML代码时无效,可以在Navigate后加入Refresh刷新一下 cpwbrwsr1->Navigate(L"about:blank"); cpwbrwsr1->Refresh(); //刷新 VARIANT* v; IHTMLDocument2* dom = NULL; .....
sololie 2013-12-03
  • 打赏
  • 举报
回复

cpwbrwsr1->Navigate(L"about:blank");
VARIANT* v;
IHTMLDocument2* dom = NULL;
(void*)dom = cpwbrwsr1->Document;
tagSAFEARRAYBOUND sab[1];
sab[0].lLbound = 0;
sab[0].cElements = 1;
tagSAFEARRAY* sa = SafeArrayCreate(VT_VARIANT, 1, sab);

HRESULT hr = SafeArrayAccessData(sa, (LPVOID*)&v);
if (SUCCEEDED(hr))
{
v->vt = VT_BSTR;
v->bstrVal = SysAllocString(WideString(mmo1->Text)); // HTML内容
dom->write(sa);
SafeArrayUnaccessData(sa);
}
SafeArrayDestroy(sa);
dom->Release();


hyz_cs 2013-12-02
  • 打赏
  • 举报
回复
引用 4 楼 sololie 的回复:
http://hi.baidu.com/cq51888/item/07e677cdcf1bc20bac092fe1 导航到一个空白页后,然后把memo中的html代码(字符串)写进去
我也有搜到一个,不过到这一句时不知道怎么改了. delphi 下是这样的 ? if Assigned(wbRecvContent.Document) then (wbRecvContent.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aMemory));
sololie 2013-12-02
  • 打赏
  • 举报
回复
http://hi.baidu.com/cq51888/item/07e677cdcf1bc20bac092fe1 导航到一个空白页后,然后把memo中的html代码(字符串)写进去
sololie 2013-12-02
  • 打赏
  • 举报
回复
你可以先让TWebBrowser导航到一个空白html页,然后往再往里面写入内容
hyz_cs 2013-12-02
  • 打赏
  • 举报
回复
引用 1 楼 sczyq 的回复:
开个127.0.0.1:xxx 端口再去打开吧
程序里面生成html代码到memo里面,然后用TWebBrowser控件打开. 你说的是什么意思? 开端口打开什么?
sczyq 2013-12-02
  • 打赏
  • 举报
回复
开个127.0.0.1:xxx 端口再去打开吧
内容概要:本文提出了一种基于场景概率的含可再生能源数据心园区容量配置与日调度协同优化策略,旨在应对可再生能源出力与算力负载双重不确定性。通过构建多场景模拟真实波动情况,并引入多元宇宙优化算法(MVO)进行高效求解,实现了数据心园区内风、光、储等设备的容量优化配置与多时间尺度日调度计划的协同决策,最终有效降低了系统综合成本,提升了可再生能源消纳率与运行可靠性。该策略充分考虑了源-荷-储多要素间的复杂耦合关系,为高比例可再生能源接入的数据心提供了科学的规划与运行理论支撑。; 适合人群:具备电力系统、能源管理或优化算法基础知识的科研人员、研究生及从事数据心能源规划的工程技术人员。; 使用场景及目标:①为含高比例可再生能源的数据心园区提供科学的容量规划与运行调度方案;②研究多元宇宙优化算法在复杂混合整数非线性规划问题的应用效能;③探索源-荷-储多要素协同优化机制,以提升能源系统的经济性、可持续性与韧性。; 阅读建议:此资源提供了完整的Matlab代码实现,建议读者在深入理解模型构建原理与数学推导的基础上,动手运行和调试代码,重点关注场景生成方法、目标函数设计、约束条件处理以及MVO算法的实现流程,以便透彻掌握该优化策略的核心技术细节与工程应用价值。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧