描述:
上司要求我现在要把别人MFC的exe程序,改成一个类似代理的ActiveX.
限我一星期完成。请问:如何做方便,快捷?
在那里有用MFC编写ActiveX的资料?
解决方案1:
我给你出个主意:搞一个文件比较器(比如Beyond Compare),然后建立一个普通MFC项目,再建立一个同名的带自动化的MFC项目,比较两部分代码,找出哪里不同,同样可以比较ATL项目,再阅读codeguru或者codeproject上的代码,国内的有www.vckbase.com,估计怎么说也多多少少有点进展
或者你的思路要换一个:
不是把原来的MFC改成ActiveX组件,而是通过阅读和原来的MFC代码,经过几次重构分离出其中的关键代码,比如说某些类,写成单独的小COM组件,然后最终将这些COM组件封装成ActiveX组件
Mark,虽然没改过,但是直觉因该不是太容易!
解决方案3:好像只能改单文档的,多文档的改不了
解决方案4: 很好的ActiveX编程资料,CHM格式的
http://218.108.41.12/vchome/book/mydownload/VCHOME_control.CHM
如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的工作。
http://www.codeguru.com/Cpp/COM-Tech/activex/
dialog frame:
http://www.codeguru.com/Cpp/COM-Tech/activex/controls/article.php/c2615/