.Net下的多媒体定时器(适用于Winform和WPF程序)

      在Visual C++下开发,使用习惯了多媒体定时器,但是在.Net下开发时,发现并没有提供组件级别的多媒体定时器。使用C#开发的话,需要自己引入,自己定义一堆导入的代码,使用起来实在时不方便啊。

      实在没办法了,利用C++/CLI封装一个多媒体定时器,用于在.Net下的开发使用。其中的类说明大致如下:

// 摘要: 
//     多媒体定时器的类, C++/CLI封装 1)可以采用委托的方式执行, 显示数据可以采用消息实现 2)可以采用异步对象的方式执行 3)采用Win32自顶一下消息方式执行
//     其中1), 2)为互斥, 只要指定了窗口句柄和自定义消息, 该消息均会触发
public class MmTimerNet : IDisposable
{
    // 摘要: 
    //     设置或获取被执行的委托
    public MmTimerNet.DgMmTimerShot MmTimerShot;

    // 摘要: 
    //     构造函数
    public MmTimerNet();

    // 摘要: 
    //     设置或获取WPF异步调用方法对象
    public System.Windows.Threading.Dispatcher DispatcherObj { get; set; }
    //
    // 摘要: 
    //     获取或设置定时器的使能状态
    public bool Enable { get; set; }
    //
    // 摘要: 
    //     接收消息的窗口句柄
    public ValueType Handle { get; set; }
    //
    // 摘要: 
    //     获取或设置定时器的触发周期, ms
    public ushort Interval { get; set; }
    //
    // 摘要: 
    //     获取或设置定时器的触发方式, 0触发一次, 1按给定的周期触发
    public ushort ShotMode { get; set; }
    //
    // 摘要: 
    //     设置自定义消息的值, 必须大于0x0400,否则无效 获取自定义小消息的值
    public uint ShotWindowMsg { get; set; }
    //
    // 摘要: 
    //     设置或获取WinForm异步调用方法对象
    public ISynchronizeInvoke SynchronizeObj { get; set; }
    //
    // 摘要: 
    //     获取定时器的ID
    public ushort TimerID { get; }
    //
    // 摘要: 
    //     获取定时器的分辨率, ms
    public static ushort TimerRes { get; }

    // 摘要: 
    //     异步调用触发的事件
    public event EventHandler<EventArgs> Tick;

    // 摘要: 
    //     析构函数
    public override sealed void Dispose();
    [HandleProcessCorruptedStateExceptions]
    protected virtual void Dispose(bool A_0);
    protected void raise_Tick(object value0, EventArgs value1);

    // 摘要: 
    //     多媒体定时器触发执行的委托类型
    public delegate void DgMmTimerShot();
}

该类可用于.Net 4.0及以上的C#、VB.NET、C++/CLI下的开发,包括Winform和WPF应用程序。

示例代码在Windows 7和Windows XP上运行均正常运行界面分别如下图,详细使用方法可以参见代码。运行时需要msvcp120.dll动态库的支持,可不能忘记哦!




 






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值