上司要求我现在要把别人MFC的exe程序,改成一个类似代理的ActiveX.
限我一星期完成。请问:如何做方便,快捷?
在那里有用MFC编写ActiveX的资料?

解决方案 »

  1.   

    http://www.codeguru.com/Cpp/COM-Tech/activex/
    dialog frame:
    http://www.codeguru.com/Cpp/COM-Tech/activex/controls/article.php/c2615/
      

  2.   

    如ActiveX工程是基于MFC的,同时EXE是基于对话框的, 
    可以这样处理:int CDialogCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
        if (COleControl::OnCreate(lpCreateStruct) == -1)
            return -1;    m_MyDialog.Create(IDD_MYDIALOG, this);
        return 0;
    }void CDialogCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
       // TODO: Replace the following code with your own drawing code.
       // pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
       // pdc->Ellipse(rcBounds);   m_MyDialog.MoveWindow(rcBounds, TRUE);
    }
    其它的比较麻烦,但对于SDI和MDI,如果 ActiveX是基于MFC的,也好办,无非就是需要一些 Copy & paste的工作。
      

  3.   

    很好的ActiveX编程资料,CHM格式的
    http://218.108.41.12/vchome/book/mydownload/VCHOME_control.CHM
      

  4.   

    Mark,虽然没改过,但是直觉因该不是太容易!
      

  5.   

    我给你出个主意:搞一个文件比较器(比如Beyond Compare),然后建立一个普通MFC项目,再建立一个同名的带自动化的MFC项目,比较两部分代码,找出哪里不同,同样可以比较ATL项目,再阅读codeguru或者codeproject上的代码,国内的有www.vckbase.com,估计怎么说也多多少少有点进展或者你的思路要换一个:
    不是把原来的MFC改成ActiveX组件,而是通过阅读和原来的MFC代码,经过几次重构分离出其中的关键代码,比如说某些类,写成单独的小COM组件,然后最终将这些COM组件封装成ActiveX组件