各位大侠:
  我现有一程序是exe调dll运行的,dll里是主程序,是个单文档结构的,view是CHTMLView派生来的,现在在view中加载的网页,选中文字按ctrl+C,却无法拷贝。
我在程序View里没有重载任何拷贝函数。但奇怪的是运行程序里help,chm文件后,按ctrl+C又可以拷贝了,不知是为什么呀?  请各位大位不吝赐教。在下感激不尽! 

解决方案 »

  1.   

    注册一个ctrl+c的加速键,在处理函数里面用ExecWB执行OLECMD_COPY命令
      

  2.   

    用IDocHostUIHandler接口的ShowContextMenu试过没
      

  3.   

    都不行呀,在menu上加了一个item:  view copy,在view里加其对应的处理函数,在函数里写void CBrowserView::OnViewCopy() 
    {
       ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT,NULL, NULL);
    }运行点view copy,到其对应的函数,并执行ExecWB(OLECMDID_COPY, OLECMDEXECOPT_级DODEFAULT,NULL, NULL); 可能什么反应都没有。结果还是不行。重载了OnShowContextMenu(),让其调用CHTMLView中的相应函数。仍然无效。HRESULT CBrowserView::OnShowContextMenu(DWORD dwID, LPPOINT pPoint, LPUNKNOWN pcmdtReserved, LPDISPATCH pdispReserved)
    {
      return CHtmlView::OnShowContextMenu(dwID,pPoint,pcmdtReserved,pdispReserved);
    }
      

  4.   

    void CHtmlView::OnEditCopy() 
    {
    ExecFormsCommand(IDM_COPY, NULL, NULL);
    return;
    }
    做个demo.可以copy,却发现CHTMLView中有OnEditCopy()这个函数,在其设位置上设断点trace,程序并没有进那个函数,一样可以copy。就是不知自已程序中的页文字为什么不能copy?
      

  5.   

    1. Add handlers for COMMAND and UPDATE_COMMAND_UI for ID_EDIT_COPY.2. In OnEditCopy place the following line:
       ExecWB (OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT, NULL, NULL);3. Edit OnUpdateEditCopy:
       OLECMDF olecmdf = QueryStatusWB (OLECMDID_COPY);
       pCmdUI->Enable (olecmdf & OLECMDF_ENABLED);For Cut and Paste you have to do the same.
    Command ID for Cut is OLECMDID_CUT and for Paste is OLECMDID_PASTE.
      

  6.   

    谢谢各位,已找到原因,是因exe调Dll,在Dll中用AfxOleInit()初始化,虽然返回为成功,可实际上没有成功导致,我将其初始化动作放到exe中做,就好了。:)
      

  7.   

    chtmlView 能直接支持编辑功能么