程序猿学长

面朝大海,春暖花开

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  60 随笔 :: 1 文章 :: 19 评论 :: 84134 阅读

    最近需要包装产品,需要将系统的界面进行一下改造,也就所谓的整容吧(整容是很危险的事情哦,听说最近又有人Over了),不过风险虽然存在,但是为了产品更好卖,还是得整容呀,大不了请个好的医生咯。最近在网上查找了很多方法,换肤现在比较常用,不过发现基于WPF来实现更好,再怎么说也是微软下一代的所支持的界面库。

    应该说用WPF开发还是比较简单的,特别是业务逻辑代码能和界面封开,这是相当O的事情了。项目时间比较紧迫,对产品的整容最好是不要涉及到肝脏了。为此,我决定还是使用调用原有的dll和ocx来实现吧,可接下来调用ocx怎么改呢,网上介绍也是迷迷糊糊的,今天弄了一下终于将ocx加入到wpf中,步骤如下:
 
需要先使用regsvr32命令 注册ocx控件。注册完成之后进行如下转换:
    1)借用工具将ocx进行转换,我使用了aximp.exe (http://msdn.microsoft.com/zh-cn/library/ms748870.aspx) 。打开vs2010下打开命令行。
输入:aximp ocx的路径 /source  (这里加入/source主要是为了生成c#的调用类,用的时候将此类加入到vs工程中即可)
 
运行后将会生成AxXXXLib.dll、XXXLib.dll和AxXXXLib.cs三个文件。
 
2)将AxXXXLib.dll、XXXLib.dll通过一下方式加入到工程中
“右键”点击工程-<Add Reference
 
选择第一步中生成的AxXXXLib.dll、XXXLib.dll,点击"OK"就完成了。
 
3)在初始化函数中添加以下代码
public MainWindow()
{
    InitializeComponent();
 
// 创建 host 对象
 System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost();
 
   // 创建OCX的对象
AxXXXLib axXXX = new AxXXXLib();
 
//开始初始化ocx对象
axXXX.BeginInit();
 
host.Child = axXXX ;
// 将对象加入到面板中
dockPan.Children.Add(host);
// 结束初始化
axXXX.EndInit();
}
在结束初始化之后再进行其它操作!
 
这样OCX就加入到WPF界面中了。
 
转自:
http://blog.csdn.net/lovesw97/article/details/6576360

参考资料:

posted on   程序猿学长  阅读(8943)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示