zoukankan      html  css  js  c++  java
  • 播放器

    最近用C#照千千静听写了一个音乐播放器,使用Windows MediaPlayer插件。虽说写的简陋但还是费了几天功夫。鄙人小菜,高手勿笑。界面如下:

     

    跟人家原有的功能打了很大的折扣。如:歌词播放效果、拖动歌词来控制播放进度、子窗体间粘连等。

    总的说,没什么技术性的活,但算是初学WinForm练练手而已。其中也学到一些知识点,但比较不成用,若不记下来,估计过不两天就忘了。

    1、 this.WindowState =FormWindowState.Minimized;只能将窗体最小化到任务栏,而非隐藏,且利用this.WindowState = FormWindowState.Normal;将其还原时,在构造函数中创建的子窗体失踪了,但在任务栏可见,灰常奇怪。所以利用NotifyIcon最小化窗体是最好调用所有窗体的Hide函数。

    2、 我的电脑->属性->高级->性能设置->视觉效果,若勾选“拖拉时显示窗口内容”,则在拖动窗体时,每移动一定的px值(大约是5)触发一次窗体PositionChange的事件;若不勾选,则拖动窗体时不触发,当松开鼠标时才触发。

    3、 不同版本的Windows Media Player中的Interop.WMPLib.dll不同,例如在装的10.0的系统上开发,换到11.0的系统可以运行,但一旦编译,则编译器会将11.0的Interop.WMPLib.dll拷贝到Debug下,使Windows Media Player的很多事件不能触发。

    程序还有改进的地方,如:自己用两个Lable+Timer模仿的暴风影音进度条,可以做成自定义控件;用循环来移动所有子窗体时,要判断子窗体是否与主窗体粘连,要用统一的类型,我将是否粘连写在了Teg中,我想规范的做法应该是写一个继承自Form的类,加一个属性,然后使子窗体继承此类

    因为将标题栏隐藏了,所以就要另外想办法来使窗体可拖动。在网上找的代码,相当的偏底层:

    #region 实现拖动无边框代码
    
            [DllImport("user32.dll")]//*********************拖动无窗体的控件
    
           public static extern bool ReleaseCapture();
    
            [DllImport("user32.dll")]
    
            public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam,int lParam);
    
            public const int WM_SYSCOMMAND = 0x0112;
    
            public const int SC_MOVE = 0xF010;
    
            public const int HTCAPTION = 0x0002;
    
            private void headPanel_MouseDown(object sender, MouseEventArgs e)
    
            {
    
                ReleaseCapture();
    
                SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION,0);//*********************调用移动无窗体控件函数
    
     
    
            }
    
     
    
            #endregion
    
    

    你只需将headPanel改成自己的控件,然后将自己的控件的MouseDown事件注册到此函数即可,当然这个控件可以是窗体本身。


    源代码


    warn
    作者:心亦
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    WPF中C#代码触发鼠标点击事件
    PHP代码实现强制换行
    C#中判断系统的架构(32位,还是64位)
    WPF的System.Windows.Threading.DispatcherTimer的使用(每隔一定的时间重复做某事)
    LINQ to Objects系列(2)两种查询语法介绍
    LINQ to Objects系列(1)相关技术准备
    常用技术社区和网站总结
    .net项目技术选型总结
    java与.net比较学习系列(7) 属性
    java与.net比较学习系列(6) 数组
  • 原文地址:https://www.cnblogs.com/szhx/p/3219347.html
Copyright © 2011-2022 走看看