admin 管理员组文章数量: 1086019
2024年3月19日发(作者:展示mysql表结构)
一、C#中调用OCX控件
调用OCX控件的步骤:
1、在系统中注册该ocx控件,命令: 控件位置(加 /u 参数是取消注册)
2、在.net的工具箱中添加该控件,拖到form中去就可以了。
不用工具箱的话,自己手工添加,需要注意一个问题,就是要用来包装一下ocx控件的类,然
后再程序中引用生成的dll就可以了。
aximp [options]{ | }
The following command generates and for the Media Player
control
.
aximp c:
ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。
Windows 窗体只能承载 Windows 窗体控件,即从 Control 派生的类。 生成可承载于 Windows
窗体上的 ActiveX 控件的包装类。这使您得以使用可应用于其他 Windows 窗体控件的同一设计时支持和
编程方法论。若要承载 ActiveX 控件,必须生成从 AxHost 派生的包装控件。此包装控件包含基础 ActiveX
控件的一个实例。它知道如何与 ActiveX 控件通信,但它显示为 Windows 窗体控件。这个生成的控件承
载 ActiveX 控件并将其属性、方法和事件公开为生成控件的属性、方法和事件。
如果不包装一下直接用,会出现 灾难性 错误。上面已经说明了原因。
在项目中引用生成的ax开头的dll,在窗体代码中增加:
声明一个公有的控件对象:
public CREC AxISPICREC;
在InitializeComponent()方法内初始化控件:
AxISPICREC = new CREC();//必须new对象,否则窗体设计器出问题
((rtInitialize)(CREC)).BeginInit();//初始
化开始
(CREC);//添加控件
((rtInitialize)(CREC)).EndInit();
te =
(()(ect("te")));//设计控件
状态
如果遇到“正试图在 os 加载程序锁内执行托管代码”这个错误,请设置“调试”--“异常”
"----"Managed Debugging Assistants"中勾掉"LoaderLock" 就可以了。
具体的可以看ms的文章:/en-us/library/8ccdh774(VS.80).aspx
二、正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内
运行托管代码 解决方法:
.NET2.0中增加了42种非常强大的调试助手,lock 是其中之一。Loaderlock
检测在一个拥有操作系统loader lock的线程上运行托管代码的情况。这样做有可能会引起
死锁,并且有可能在操作系统加载器初始化DLL前被使用。
解决此异常的方法为:
办法一
1. 把vs2005菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock 的选
中状态去掉
2. 如果异常(exception)这一项没有的话,在工具---自定义---命令选项卡---左边
选择调试--右边把异常托到菜单里
3. 快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态
去掉
方法二
在HKEY_LOCAL_mework下面增加一个String,值为
"0"
不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处。
版权声明:本文标题:C#中调用OCX控件 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1710822923a574886.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论