12.5.3 Visual C++(www.cppentry.com)单击工程中调用COM组件
用户可以按照以下步骤在Visual C++(www.cppentry.com)单击工程中调用COM组件。
(1)新建一个基于对话框的MFC工程ImageRecognize,选择"Project"→"Settings"命令,在如图12.26所示的对话框中进行设置。
|
| 图12.26 项目设置 |
(2)在*Dlg类的头文件中添加如下包含文件:
- #include "mwcomutil.h"
- #import "C:\Program Files\MATLAB\R2009a\bin\win32\mwcomutil.dll" raw_ interfaces_only
- #include "TestImageID_1_0.h"
需要注意的是,在导入mwcomutil.dll时,需要使用当前计算机的MATLAB的安装路径。
(3)将TestImageID_1_0.h和TestImageID_1_0.c复制到创建的MFC工程的目录下。同时要把src\mwcomtypes.h复制到MFC目录下,否则编译会提示出错,这样就可以调用这个COM组件了。
(4)选择"Project"→"Add to project"→"Add files"命令,选择复制过来的TestImageID_1_0.h和TestImageID 1_0.c。
在主对话框类定义文件ImageRecognizeDlg.h中添加一个public类型的所定义COM组件的成员变量,部分程序代码如下:
- #include "mwcomutil.h"
- #import "C:\Program Files\MATLAB\R2009a\bin\win32\mwcomutil.dll" raw_ interfaces_only
- #include " TestImageID_1_0.h"
- //////////////////////////////////////////////////////////////////////////
- // CTestFFTComDlg dialog
- class CTestFFTComDlg: public CDialog
- {
- // Construction
- public:
- CTestFFTComDlg (CWnd* pParent = NULL); // standard constructor
- ITestImageID *pImageID;
- …
- }
(5)在对话框上放上一个按钮,双击按钮添加响应函数,然后输入以下代码:- void CImageRecognizeDlg::OnBtntextid()
- {
- // TODO: Add your control notification handler code here
- CoInitialize(NULL);
- HRESULT hCom=CoCreateInstance(CLSID_TestImageID,NULL,CLSCTX_ALL,IID_ ITestImageID,
- (void**)& pImageID);
- if(FAILED(hCom))
- {
- AfxMessageBox("create COM instance failed.");
- return;
- }
- pImageID->FuncTextRecog(); //调用COM的接口
- }
(6)编程(www.cppentry.com)并运行程序。将弹出如图12.27所示界面。单击界面中的"文字图像识别"按钮之后,就会通过COM的接口调用MATLAB图像识别程序,最后得到的原始图像如图12.28所示,图像识别的文字左边轮廓如图12.29所示。
|
| 图12.27 程序运行后主界面 |
|
| 图12.28 给定的原始文字图像 |
|
| 图12.29 识别出来的左边轮廓 |