• λ我爱Aspx >> C#.Net >> 编写C#程序实现动态系统托盘图标
  • 编写C#程序实现动态系统托盘图标

  • :aspxer  Դ:internet  :2007-5-7 13:28:25  ؼ:
  • //

    InitializeComponent();

    //

    // TODO: Add any constructor code after InitializeComponent call

    //

    m_bFlag=true;

    m_bShowWnd=true;

    try

    {

    m_Icon1 = new Icon("Icon1.ico");//导入图标文件

    m_Icon2 = new Icon("Icon2.ico");

    }

    catch ( Exception e )

    {

    MessageBox.Show("Error " + e.Message,"Animate Tray - Error");

    menuItem2.Enabled = false;

    menuItem3.Enabled = false;

    }

    }

    添加menuItem1、menuItem2、menuItem3、m_trayIcon的Click事件,消息处理函数如下:

    private void menuItem1_Click(object sender, System.EventArgs e)

    {

    timer1.Start();//打开计时器

    }

    private void menuItem2_Click(object sender, System.EventArgs e)

    {

    timer1.Stop();//停止计时器

    }

    private void menuItem3_Click(object sender, System.EventArgs e)

    {

    Application.Exit();//退出应用程序

    }

    private void m_trayIcon_Click(object sender, System.EventArgs e)

    {

    if(m_bShowWnd == true)//隐藏主界面

    {

    this.Visible = false;

    m_bShowWnd = false;

    }

    else//显示主界面

    {

    this.Visible = true;

    m_bShowWnd = true;

    }

    }

    最后还要添加timer1的Tick()函数:

    private void timer1_Tick(object sender, System.EventArgs e)

    {

    if ( m_Icon1 != null && m_Icon2 != null ) //如果两个图标文件都被正确载入

    {

    //只要timer1被启动,则在两个图标之间不断进行选择变换,实现动画效果

    if ( m_bFlag == true )

    {

    m_trayIcon.Icon = m_Icon2;

    m_bFlag = false;

    }

    else

    {

    m_trayIcon.Icon = m_Icon1;

    m_bFlag = true;

    }

    }

    }

    按Ctrl+F5试试效果!

    运行程序,将显示一个主窗口,此时还可以看到在任务栏上面多了一个图标。当鼠标移到其上停留一下时,将显示一个简单的提示信息,点击该图标则将隐藏主窗口,单击右键,出来一个菜单,选"动画图标开始"和"动画图标结束"可以控制图标状态。

    四.总结:

    做完这个程序,我们不难发现用C#做一些运用程序效果是非常方便的。以前我在SDK、MFC下,用到了Shell_NotifyIcon()、TrackPopMenu()以及DestroyMenu(),还要自己添加消息处理函数,工作量是非常大的。现在微软为我们做好了这些工作,是不是很方便?快快加入C#的行列吧。

    Ҷƪл˵?
  • һƪ用Visual C#调用Windows API函数
    һƪ用C#实现电脑+数据线+手机模式发短信