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
    作者:心亦
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Java SE 第十二,三,四,五六讲 Java基础知识回顾
    Java SE第二十一 抽象类
    Java SE 第二十讲 static与final关键字详解
    使用AspNetPager分页的范例
    AJax错误"WebForm1"没有定义的javascript错误的解决方法
    如何为自定义的控件在工具箱中自定义个性化的图标
    C#面向对象名词比较(转ttyp 的文章)
    vs2003自带的报表使用load("rpt.rpt")方式,显示不出报表工具的图片解决方案
    DropDownlist常见的小错误
    Ajax获取数据库中的字段
  • 原文地址:https://www.cnblogs.com/szhx/p/3219347.html
Copyright © 2011-2022 走看看