一、注册OCX并利用工具生成dll
@echo off color a ::Failed REGSVR32 /S /I "MSCOMCTL.OCX" if exist %windir%\SysWOW64 ( .\AxImp.exe "C:\Windows\SysWOW64\MSCOMCTL.ocx" /out:.\MSCOMCTL64.dll ) else ( .\AxImp.exe "C:\Windows\System32\MSCOMCTL.ocx" /out:.\MSCOMCTL32.dll ) pause
二、添加引用(OCX生成的dll)并编码使用
项目引用:WindowsFormsIntegration.dll,System.Windows.Forms.dll
xaml代码使用 <Window x:Class="wpf_ocx2dll.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 添加命名空间 xmlns:ms="clr-namespace:MSComctlLib;assembly=MSComctlLib" Title="MainWindow" Height="350" Width="525"> <Grid> <WindowsFormsHost x:Name="host"> <ElementHost> <!--<ms:Button Caption="test" />--> </ElementHost> </WindowsFormsHost> </Grid> </Window>
或cs代码使用
MSComctlLib.IButton btn = new MSComctlLib.Button();
public MainWindow()
{
InitializeComponent();
try
{
((System.ComponentModel.ISupportInitialize)btn).BeginInit();
//host.Child =btn;
((System.ComponentModel.ISupportInitialize)btn).EndInit();
}
catch (Exception ex)
{
}
}