我试了一下CHTMLVIEW视图下m_pDocument中的ismodify怎么不能用。。

解决方案 »

  1.   

    是否被更改其他人没有办法帮你判断,你必须自己判断是否进行了修改,在某一时刻如果用户更改了文档,你就在程序中调用文档的SetModifyFlag函数即可。
      

  2.   

    是否被更改其他人没有办法帮你判断,你必须自己判断是否进行了修改,在某一时刻如果用户更改了文档,你就在程序中调用文档的SetModifyFlag函数即可。SetModifyFlag为什么不能用?
      

  3.   

    这样做是不行的, setmodifyflag 方法是跟document-view 模型相关的。而现在CHTMLView下的内容是在 IWebBrowser 控件所管制,所以需要结合 IStream 接口的脏位标识,自己写一个跟业务相关的方法.参考:
       BOOL CHtmlView::IsModified(BOOL bFlag)
    {
    ///////////////////////////////new
    CString cStr1,cStr2;
    cStr1 = m_Doc;   //原先 document文档的内容,保留一份。 HRESULT m_hResult;
    IPersistStreamInit* spPSI = NULL;
    CStreamOnCString stream; if(NULL != m_pHTMLDoc2)
    {
    m_hResult = m_pHTMLDoc2->QueryInterface(IID_IPersistStreamInit, (void**)&spPSI);
    if( SUCCEEDED(m_hResult) && spPSI )
    {
    m_hResult = spPSI->Save(static_cast<IStream*>(&stream), TRUE);
    if (m_hResult == S_OK)
    {
    //取出当前流的内容
    if (!stream.CopyData(cStr2))
    m_hResult = E_OUTOFMEMORY;
                
    }
    spPSI->Release();
    } if(bFlag)//取消脏位, 并保留新的文档
    {
    m_Doc = cStr2;
    } if(cStr2.Compare(cStr1) != 0 )  //与保留的文档进行比较。
    {
    return TRUE;
    }
    }
    return FALSE;
    }