如何把一个MFC的EXE程序改成一个ActiveX?(在线等候) 上司要求我现在要把别人MFC的exe程序,改成一个类似代理的ActiveX.限我一星期完成。请问:如何做方便,快捷?在那里有用MFC编写ActiveX的资料? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.codeguru.com/Cpp/COM-Tech/activex/dialog frame:http://www.codeguru.com/Cpp/COM-Tech/activex/controls/article.php/c2615/ 如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的工作。 很好的ActiveX编程资料,CHM格式的http://218.108.41.12/vchome/book/mydownload/VCHOME_control.CHM Mark,虽然没改过,但是直觉因该不是太容易! 我给你出个主意:搞一个文件比较器(比如Beyond Compare),然后建立一个普通MFC项目,再建立一个同名的带自动化的MFC项目,比较两部分代码,找出哪里不同,同样可以比较ATL项目,再阅读codeguru或者codeproject上的代码,国内的有www.vckbase.com,估计怎么说也多多少少有点进展或者你的思路要换一个:不是把原来的MFC改成ActiveX组件,而是通过阅读和原来的MFC代码,经过几次重构分离出其中的关键代码,比如说某些类,写成单独的小COM组件,然后最终将这些COM组件封装成ActiveX组件 C++问题,在通信中选择了以结构体传输, 大家讨论讨论! MFC中如何做一个像这个论坛差不多界面的界面? 谁知道哪家网上书店价格最低? 请问如何遍历搜索,某一Key下所有Value及它的数据内容,急切求解,希望给出源码。 为什么在线程中不能AFXOLEINIT()? 请问怎样实现像word中停靠在状态栏上方工具栏 新手问题 MFC 自动给注册的class name 是什么? 简单问题,高分求救!! WSADuplicateSocket在完成端口服务器有问题? 请问这个具体是怎么做的? VC中用ADO连数据库问题??
dialog frame:
http://www.codeguru.com/Cpp/COM-Tech/activex/controls/article.php/c2615/
可以这样处理: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://218.108.41.12/vchome/book/mydownload/VCHOME_control.CHM
不是把原来的MFC改成ActiveX组件,而是通过阅读和原来的MFC代码,经过几次重构分离出其中的关键代码,比如说某些类,写成单独的小COM组件,然后最终将这些COM组件封装成ActiveX组件