在C#中使用c++编译的ocx的方法
来源:互联网 发布:仿淘宝购物车的html 编辑:程序博客网 时间:2024/05/18 18:19
若使用WPF等其他类型的工程,在调用组件内的方法时,会报错:
灾难性故障
未处理 System.Runtime.InteropServices.COMException
Message="灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))"
Source="mscorlib"
ErrorCode=-2147418113
解决办法:
aximp路径(vs2012)C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools
使用aximp(ActiveX控件导入程序),将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。
详见http://msdn.microsoft.com/zh-cn/library/8ccdh774.aspx。
Aximp.exe 一次转换整个 ActiveX 控件类型库,并产生一组程序集,这些程序集包含在原始类型库中定义的类型的公共语言运行时元数据和控件实现。
生成的文件按照下面的模式命名:
COM 类型的公共语言运行时代理:progid.dll
ActiveX 控件的 Windows 窗体代理(其中 Ax 表示 ActiveX):Axprogid.dll
方法:在cmd命令提示符窗口,输入如下命令:
aximp e:\PIS2004.ocx
将生成的PIS2004Lib.dll和AxPIS2004Lib.dll引用到工程文件中。
2、在c#的工具箱内,添加COM组件PIS2004.ocx,工具箱内显示不出来,无法将其作为控件拖拽到窗体上。
此时需要通过ActiveX 控件的 Windows 窗体代理AxPIS2004Lib.dll,在后台代码中实例化一个控件,并添加到窗体中。
事先需要添加引用:System.Windows.Forms,WindowsFormsIntegration。
例:
// 创建 host 对象,用于承载AxtiveX控件
WindowsFormsHost host = new WindowsFormsHost();
//实例化AxtiveX控件
AxPIS2004Lib.AxPIS2004 objAxPIS2004 = new AxPIS2004Lib.AxPIS2004();
//开始初始化ocx对象
objAxPIS2004.BeginInit();
objAxPIS2004.Height = 200;
objAxPIS2004.Width = 200;
// 结束初始化
objAxPIS2004.EndInit();
//将控件添加到host中
host.Child = objAxPIS2004;
// 将控件显示在页面上(其中skp_PIS2004为窗体上一个用于放置控件的容器StackPanel)
this.skp_PIS2004.Children.Add(host);
进行完上述步骤之后,ocx内的方法就可以正常使用了。
- 在C#中使用c++编译的ocx的方法
- firefox中使用ocx的方法
- 在PB中使用OCX控件遇到的问题
- 在MFC中使用OCX控件遇到的一个问题
- firefox中使用ocx的方法 嵌入object标签
- 关于C++Builder 中使用 VCLSkin 换肤控件的一点心得!在OCX(ActiveX)中的应用。
- json-c-0.9 在linux上编译使用的方法
- 6.C#:在C#中使用Nullable类型(给整型赋null值的方法)
- 在delphi中ocx控件的安装
- Delphi中Ocx的动态注册方法
- 在C#中调用C++Dll函数的方法
- 在c++中使用c编译好的库
- 在Dduilib中使用OCX
- 在SDK中使用GDI+出现的编译问题解决方法
- firefox中使用ocx的方法 嵌入object标签+js判断各个浏览器的方法
- 在C#中使用C/C++写的DLL
- 在C#中使用C/C++写的DLL
- 如何在C#中使用C/C++写的DLL。
- [C#] 调用有管理员权限的CMD
- 在Ubuntu、Linux Mint上安装Mac OS X主题
- C# winform 弹出输入框
- Oracle数据库物理文件移动(备份)
- php中simplexml_load_file()函数用法详细
- 在C#中使用c++编译的ocx的方法
- 【DotA2玩家心得】激活显示FPS/PING 开启国服 开启右键反补
- 指针函数与函数指针的区别
- THINKPHP开启\'SHOW_PAGE_TRACE\'报错,关闭后无法显示页面的解决
- PHP CURL 使用代理访问服务器
- 【总结】常见的开发中错误
- C# WebBrowser 设置代理完全解决方案
- 使用CURL伪造来源网址与IP
- java编程之多线程 入门级,继承Thread类