mfc ocx 控件开发需要注意的问题
来源:互联网 发布:js 判断数组 编辑:程序博客网 时间:2024/06/06 03:29
1)activex ocx 中需要调用第三方dll,lib;而第三方的库编译是用c++ builder编译的,vs2008直接调用.lib 有问题;需要转换;
C++Builder生成DLL,VC调用。
1、用extern "C"修饰C++Builder导出的DLL函数。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的impdef工具生成DLL对应的def文件。如:impdef xxx.def xxx.dll。
3、用记事本打开xxx.def文件,删去每个函数名前的"_"。如原来的def文件为:
C/C++ code
LIBRARY XXX.DLL
EXPORTS
___CPPdebugHook @2 ; ___CPPdebugHook
_aFunc @1 ; _aFunc
那么删除后就变成了:
C/C++ code
LIBRARY XXX.DLL
EXPORTS
__CPPdebugHook @2 ; ___CPPdebugHook
aFunc @1 ; _aFunc
4、用VC的LIB工具,根据上面的def文件生成lib文件。如:lib.exe /DEF:XXX.def /MACHINE:IX86,在vc的安装目录下对应的lib.exe目录下运行。生成lib文件之后,VC便可以使用这个lib文件;
2)准备cabarc.exe工具,可以从微软官方下载使用运行如下命令进行打包:
CABARC.exe -s 6144 N "xxxxxx.cab" "xxxxx.ocx" "mwhrf_bj.dll" "xxxxxx.inf"[version]
其中xxxx.inf内容如下:
[version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] MyTestActiveX.ocx=MyTestActiveX.ocxCVAPIV200.dll=CVAPIV200.dll [MyTestActiveX.ocx] file=thiscab clsid={4A89CA80-B5C4-41D5-B150-8FC73A85E641} FileVersion=1,0,0,1 RegisterServer=yes DestDir=11
其中clsid:
只有需要注册的ocx文件才设置这个属性,他的值就是改ocx的唯一classid,可以从项目的.idl文件中最下方查找;(uuid)
3)vs2008 如何调试activex控件;activex调试工具
C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\TstCon32.exe
vs2008的TstCon32.exe需要自己编译,直接在网上下载vc6.0的TstCon32.exe;在vs2008的菜单工具栏,点外部工具,弹出对话框;
标题:ActivexOcxTestTool
命令:C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\TstCon32.exe
然后点应用;在工具菜单中选择ActivexOcxTestTool,运行TstCon32.exe;
此时弹出标题为:ActiveX control Test Container ;
在Edit菜单中选择insert new control,选择我们的ocx控件,然后在control菜单中选择invoke methods 就可以调试.ocx中的函数了;
4)因为.ocx中又调用了第三方的库文件,使用动态加载dll的方法;LoadLibrary dll 失败问题;
解决办法:
hdll=NULL;
TCHAR chCurDir[MAX_PATH] = {0};
GetCurrentDirectory(MAX_PATH, chCurDir);
SetCurrentDirectory(_T("E:\\Debug\\"));
hdll = LoadLibrary(_T("CVAPIV200.dll"));
SetCurrentDirectory(chCurDir);
- mfc ocx 控件开发需要注意的问题
- MFC ActiveX (ocx)控件的开发的一些注意点
- MFC ActiveX (ocx)控件的开发
- MFC ActiveX (ocx)控件的开发
- 在MFC中使用OCX控件遇到的一个问题
- 使用GDI+编译OCX(MFC)控件的问题
- MFC中让控件随窗体大小变化而变化中需要注意的问题
- 使用MFC开发ActiveX(ocx)控件
- mFC开发ocx控件放到网上去
- vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
- web开发需要注意/n的问题
- 开发网站中需要注意的问题
- 手机网站开发需要注意的问题
- 开发SDK时需要注意的问题
- NDK开发时需要注意的问题
- Android开发60需要注意的问题
- Android开发需要注意的问题
- jni开发需要注意的问题:
- spark小事记
- HDU4607(最大直径 树DP)
- 工作中遇见的问题总结
- SQL中GROUP BY、HAVING操作
- hdoj Minimum Transport Cost 1385 (floyd++路径输出)
- mfc ocx 控件开发需要注意的问题
- POJ 3274:Gold Balanced Lineup 做了两个小时的哈希
- iOS轻量级多线程实现
- Java基础文章列表
- 单链表反转,要求空间复杂度O(1)
- 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
- 连通性问题
- noip 10.27模拟
- 【c++面向对象编程】工资管理系统