MFC如何打开html显示到view类(基于Cview),并且是处于可编辑状态

解决方案 »

  1.   

    如果你是指网页作为界面,参考下这个
    http://blog.csdn.net/IamNieo/archive/2008/09/01/2860911.aspx
      

  2.   

    很简单,你创建一个单文档,基于CEditView的,然后在菜单上创建一个按钮,按钮中写获得网页源代码的函数,参考代码如下#include <stdio.h>
    #include <windows.h>
    #include <wininet.h>
    #pragma comment(lib,"Wininet.lib")
    #include <vector>
    using namespace std; 
    int main(int argc, char* argv[])
    {
        vector<char> v;
        CHAR szUrl[] = "http://www.baidu.com/";
        CHAR szAgent[] = "";
        HINTERNET hInternet1 = 
            InternetOpen(NULL,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,NULL);
        if (NULL == hInternet1)
         {
            InternetCloseHandle(hInternet1);
            return FALSE;
         }
        HINTERNET hInternet2 = 
            InternetOpenUrl(hInternet1,szUrl,NULL,NULL,INTERNET_FLAG_NO_CACHE_WRITE,NULL);
        if (NULL == hInternet2)
         {
            InternetCloseHandle(hInternet2);
            InternetCloseHandle(hInternet1);
            return FALSE;
         }
        DWORD dwMaxDataLength = 500;
        PBYTE pBuf = (PBYTE)malloc(dwMaxDataLength*sizeof(TCHAR));
        if (NULL == pBuf)
         {
            InternetCloseHandle(hInternet2);
            InternetCloseHandle(hInternet1);
            return FALSE;
         }
        DWORD dwReadDataLength = NULL;
        BOOL bRet = TRUE;
        do 
        {
            ZeroMemory(pBuf,dwMaxDataLength*sizeof(TCHAR));
            bRet = InternetReadFile(hInternet2,pBuf,dwMaxDataLength,&dwReadDataLength);
            for (DWORD dw = 0;dw < dwReadDataLength;dw++)
             {
                v.push_back(pBuf[dw]);
             }
         } while (NULL != dwReadDataLength);
        vector<char>::iterator i;
        for(i=v.begin(); i!=v.end(); i++)
            printf("%c",*i);
        return 0;
    }
      

  3.   

    最后在View中显示出来就可以了,因为是基于CEditView的,所以就是个“记事本”,你可以编辑,保存为文本文件
      

  4.   

    是图形化的编辑 不是编辑html源代码。我能够在view类里面新建一个网页,并编辑然后保存。现在不知道在view类里怎么打开一个网页进行编辑。我的是vc6.0 MFC
      

  5.   

      
     你好!我不是要做界面,我是要打开一个网页进行编辑。类似dreamweaver.不过是用vc6.0 MFC写的。
      

  6.   


    你好!
    是图形化的编辑 不是编辑html源代码。我能够在view类里面新建一个网页,并编辑然后保存。现在不知道在view类里怎么打开一个网页进行编辑。我的是vc6.0 MFC
      

  7.   

    CView显示网页?你想自己实现解析HTML么?还是派生于CHtmlView吧,我记得这个本身就支持编辑的,设置一个属性即可
      

  8.   

    当然不想自己解析html源码。只是我现在的工程里的view类是派生于Cview类的,我尝试过把它改为派生于CHtmlView,可是会报错。如果要新建一个派生于CHtmlView的类再在这里面显示网页的话 我得改很多东西。可不可以这样?:我新建一个XXXview类派生于CHtmlView,然后在我的这个原有的Cview类里面显示XXXview类里面网页的内容?
      

  9.   

    这个是可以的,你要源程序还是做好的DLL?
    DLL:http://www.77169.com/classical/HTML/41362.html
    源程序我自己用VC6版本的,功能很强大,不过这里没法给你啊,网上我搜了一下,又找不到链接给你。你要么到这里下一个吧:http://www.pudn.com/downloads11/sourcecode/windows/detail46708.html 可能和我的不一样。
      

  10.   

    http://www.77169.com/classical/HTML/41362.html    这个页面被删除了。在pudu的这个源码我下过,是基于对话框的。在对话框显示网页。我希望在cview里面显示,不过楼上的前辈也说了 要用chtmlview才能显示。我想问问能不能在cview类里面“显示”一个chtmlview
      

  11.   

    能不能在cview类里面“显示”一个chtmlview----当然不可以!!!
      

  12.   

    你的那个应该不对,你找一下这个:
                Internet Explorer DHTML Editor class written by Elmuesoft
                tested on Visual Studio 6.0, 7.0, 7.1
                                  www.elmue.de.vu
                                  kickme.to/elmue
                                  elmue(at)gmx.de这个和是否对话框根本没有关系,你不就是要这个原理吗?和VIEW和对话框有什么关系呢?VIEW只是一种显示模式而已,希望你先理顺这个区别。你要的是如何让用户可以修改HTML即见即所得的页面,可以增加删除修改里面的元素,如图片、表格、链接、文字、动画等等。这个正合你意。
      

  13.   

    当然可以进行文本编辑了。
    你如果说要再生成可视化的网页元素的话,那可就复杂了哇,还需要再弄个CHtmlView呢。完全是个微型的DreamEver啊
      

  14.   


    我在HtmlView类里面执行Navigate2(_T(www.baidu.com),0,NULL),他不显示网页,但是status bar有加载信息。是为什么?我改变参数后变成:
    Navigate2(_T(www.baidu.com),navOpenInNewWindow,NULL)能在浏览器中打开。这是为什么啊 是我的视图类有问题吗?