织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>VC(MFC)>

VC调用IDL过程文件(*.pro)

jackyhwei 发布于 2010-10-23 16:07 点击:次 
IDL是接口定义语言。MIDL是Microsoft的IDL编译器。在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。
TAG:

IDL是接口定义语言。MIDL是Microsoft的IDL编译器。在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。
MIDL编译器将生成XX.H XX_.C XX_P.C DLLDATA.C 个文件,其作用分别为:
XX.H 一个同C和C++兼容的,包含IDL中所描述的所有接口声明的头文件;
XX_.C     一个定义有IDL文件中所用的所有GUID的C文件
XX_P.C     一个实现IDL文件中接口的代理及残 的C文件
DLLDATA.C 一个包含代理和残 的DLL的C文件
用MIDL编译有的时候可能不方便,你可以建立一个DLL工程,然后加载IDL编译就可以了。
 
 
(1)在IDL编译环境下,在*.pro过程中增加VCInitIDL子过程,该过程的主要功能是初始化VC的编译环境,进行VC环境和IDL环境的链接;
(2)把IDL语言需要的dll重新整理成一个文件夹idl,并把该文件夹拷贝到系统子目录下,然后在VC代码中设置这个路径:m_IDLDrawWidget.SetIdlPath("Redite/bin/bin.x86");
(3)在系统平台下,修改VC代码并进行调用:
if(m_IDLDrawWidget.GetSafeHwnd()==NULL)//判断是否已经创建Widget,false创建;true销毁
{
m_IDLDrawWidget.Create("",WS_CHILD,CRect(0,0,1,1),this,1000,NULL);
}else
{
m_IDLDrawWidget.DestroyDrawWidget();
}
m_IDLDrawWidget.SetIdlPath("Redtide/bin/bin.x86"); //设置idl的路径;
m_IDLDrawWidget.InitIDL((long)m_hWnd); //初始化句柄
CString strCommand;
strCommand=CString(".Compile Redtide/Color24.pro");
m_IDLDrawWidget.ExecuteStr(strCommand);
m_IDLDrawWidget.SetOnInit("VcInitIDL"); //设置链接
long i=m_IDLDrawWidget.CreateDrawWidget();
if(i<=0)
{
AfxMessageBox("创建IDL出现错误!");
return;
}

 

(pascal4)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201010/10354.html]
本文出处:百度博客 作者:pascal4
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容