如题,现在在用 C++ 做一个东西,一个基于WebBrowser实现的聊天框,如何实现将里面的图片拖放保存到桌面或指定的文件夹?需要实现哪些接口?

解决方案 »

  1.   

    RECT rect ; 
    Liulankuang.GetClientRect(&rect);//可以获得你的浏览控件的大小
    CComQIPtr<IHTMLDocument2> pDoc;//假定你已经通过Liulankuang变量(CExplorer1)的变量得到文档
    CComQIPtr<IHTMLElement> pElem;
    pDoc->elementFromPoint(鼠标相对位置X,鼠标相对位置Y,(void**)&pElem);
    if(!pElem)return E_FAIL;
    VARIANT pv;
    pv.vt = VT_BOOL;
    pElem->get_onmousedown(&pv);
    if(true == pv.boolVal)
    {
    BSTR ourterHTML;
    pElem->get_outerHTML(&ourterHTML);
    CString strHTML(ourterHTML);
    int pos = strHTML.Find(L"<img",0);
    //此处省略对连接地址的查找
    CString Url;//假定找到地址
    //创建文件夹 省略N个字
    //活得文件名称 省略N个字
    //假定URL和文件都存在
    URLDownloadToFile(0,Url,L"d:\\down\\xxxx.xxx",0,0);
    }另外的一些  long left = Liulankuang.get_Left();
    long width = Liulankuang.get_Width();
    long top = Liulankuang.get_Top();
    CPoint point  = Liulankuang.GetCaretPos();
    可能对你有用
      

  2.   

    感谢你的回复,看了下代码,不是我的需求。目前的的研究结果是采用创建IDataObject对象,以及实现IDragSource接口,就相当于将图片或文字抑或其他的东西都通过IDataObject对象以及剪贴板的方式交付给windows系统处理,其他包括桌面、word均会实现IDropTarget接口并接受处理这个对象。
    目前我市卡在了针对图片文件如何创建IDataObject对象,文字是会了,停在这里很郁闷啊~~~
      

  3.   


    挺起来很高深,我也没涉及过这样的领域,不过,图像你是以保存的方式做你的事情 还是以显示的方式,如果是现实的方式,或许你可以使用剪切板的CF_BITMAP等来对你已知领域(clipbrd)进行操作.暂时我不需要用到这方面的知识  应该马上就会用到 到时候再找你讨论^^
      

  4.   

    前几天,工作中意外发现的,就是你现在找的。
    在IE窗口的父窗口中调用DragAcceptFiles();这样网页中的图片就可以向外拖了。我正在想办法如何禁掉这个功能呢。