`
wangleifire
  • 浏览: 510863 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Windows 7 任务栏开发 之 进度条(Progress Bar)

    博客分类:
  • c#
阅读更多

       上一篇 我们完成了“覆盖图标”(Overlay Icon)的相关开发,本篇我们将对进度条特性进行研究。在使用IE 下载文件时,任务栏图标会同步显示当前下载进度(如下图)。那么在应用程序中如何实现这个效果呢?

iedownload  下载状态

 

TaskbarManager.SetProgressValue 方法

       在TaskbarManager 类中有三种不同方式使用SetProgressValue 方法来设置进度条当前位置,其中currentValue 为进度条当前位置的参数,maximumValue 为最大参数:

//设置当前窗口


public void 
SetProgressValue(int 
currentValue, int 
maximumValue)
{
    CoreHelpers
.ThrowIfNotWin7();
    TaskbarList.SetProgressValue(OwnerHandle, Convert
.ToUInt32(currentValue), 
                                 Convert
.ToUInt32(maximumValue));
}

//设置指定窗口


public void 
SetProgressValue(int 
currentValue, int 
maximumValue, 
                             IntPtr 
windowHandle)
{
    CoreHelpers
.ThrowIfNotWin7();
    TaskbarList.SetProgressValue(windowHandle, Convert
.ToUInt32(currentValue), 
                                 Convert
.ToUInt32(maximumValue));
}

//设置指定WPF窗口


public void 
SetProgressValue(int 
currentValue, int 
maximumValue, 
                             System.Windows.Window 
window)
{
    CoreHelpers
.ThrowIfNotWin7();

    TaskbarList.SetProgressValue(
        (new 
WindowInteropHelper
(window)).Handle,
        Convert
.ToUInt32(currentValue),
        Convert
.ToUInt32(maximumValue));
}

 

TaskbarProgressBarState 进度条状态

       除了常见的绿色(Normal 正常状态)外,还可以通过调用枚举TaskbarProgressBarState 使用其他几种状态,请参看下表:

名称描述
NoProgress 不显示进度条
Indeterminate 不定值进度条(处于滚动状态)
Normal 正常状态(绿色)
Error 错误状态(红色)
Paused 暂停状态(黄色)

 

TaskbarManager.SetProgressState 方法

     如何为进度条设置以上状态呢?当然TaskbarManager 也同样提供了三种不同的方式使用SetProgressState 方法,对进度条状态进行相应的设置:

//设置当前窗口状态


public void 
SetProgressState(TaskbarProgressBarState 
state)
{
    CoreHelpers
.ThrowIfNotWin7();
    TaskbarList.SetProgressState(OwnerHandle, (TBPFLAG
)state);
}

//设置指定窗口状态


public void 
SetProgressState(TaskbarProgressBarState 
state, IntPtr 
windowHandle)
{
    CoreHelpers
.ThrowIfNotWin7();
    TaskbarList.SetProgressState(windowHandle, (TBPFLAG
)state);
}

//设置指定WPF窗口状态


public void 
SetProgressState(TaskbarProgressBarState 
state, 
                             System.Windows.Window 
window)
{
    CoreHelpers
.ThrowIfNotWin7();
    TaskbarList.SetProgressState(
        (new 
WindowInteropHelper
(window)).Handle,
        (TBPFLAG
)state);
}

 

效果演示

       下面只需要在程序中使用以上方法便可实现对进度条的控制,下面代码通过Slider 调节进度条当前数值:

TaskbarManager
.Instance.SetProgressValue((int
)progressSlider.Value, 100);
TaskbarManager
.Instance.SetProgressState(
                (TaskbarProgressBarState
)progressBarStatus.SelectedItem);

 

通过调整进度条呈现出三种不同的状态效果:

slider

normal  正常状态     error  错误状态     pause  暂停状态

 

闪动效果

       使用Live Messenger(LM)聊天时,如果对方发出了信息LM 图标会闪动提示,虽然Windows API 没有直接控制闪动效果的方法,但该效果在开发中可能会经常使用,下面代码为一个闪动效果类:

internal sealed class 
FlashWindowHelper

{
    DispatcherTimer 
_timer;
    int 
_count = 0;
    int 
_maxTimes = 0;
    Window 
_window;

    public void 
Flash(int 
times, double 
millliseconds, Window 
window)
    {
        _timer = new 
DispatcherTimer
();
        _maxTimes = times;
        _timer.Interval = TimeSpan
.FromMilliseconds(millliseconds);
        _timer.Tick += OnTick;
        _window = window;
        _timer.Start();
    }

    void 
OnTick(object 
sender, EventArgs 
e)
    {
        if 
(++_count < _maxTimes)
        {
            Win32
.FlashWindow(new 
WindowInteropHelper
(_window).Handle, (_count % 2) == 0);
        }
        else
        
{
            _timer.Stop();
        }
    }
}

internal static class 
Win32

{
    [DllImport
("user32.dll"
)]
    public static extern bool 
FlashWindow(IntPtr 
hwnd, bool 
bInvert);
}

 

通过FlashWindowHelper 类可以轻松的使任务栏图标闪动起来:

private void 
flashTaskbar_Click(object 
sender, RoutedEventArgs 
e)
{
    FlashWindowHelper 
helper = new 
FlashWindowHelper
();
    helper.Flash(8, 400, Application
.Current.MainWindow);
}
分享到:
评论

相关推荐

    如何在状态栏中添加进度条

    在Windows应用程序开发中,特别是在使用MFC(Microsoft Foundation Classes)框架时,我们经常需要向用户显示应用程序的状态或执行过程,这时状态栏中的进度条就能派上用场。本资源主要介绍如何在MFC应用程序的状态...

    在状态栏中增加进度条

    在Android开发中,为了提供更好的用户体验,我们常常需要在状态栏显示进度条,尤其是在执行耗时操作如网络请求、文件下载或数据加载时。本文将详细介绍如何在Android的状态栏中添加进度条,并提供源码帮助你理解并...

    VC6.0中实现在状态栏中加入进度条

    在Microsoft Visual C++ 6.0(简称VC6.0)环境下,开发MFC应用程序时,我们有时需要在用户界面中展示进度信息,此时状态栏(StatusBar)中的进度条(ProgressBar)是一个很好的选择。本教程将详细介绍如何在VC6.0的...

    状态栏中添加进度条

    在MFC(Microsoft Foundation Classes)编程环境中,状态栏(Status Bar)通常用于显示应用程序的状态信息,如快捷键提示、帮助信息等。为了增强用户体验,有时我们需要在状态栏中添加一个进度条来显示某些长时间...

    VC状态栏添加进度条

    在VC++编程环境中,添加进度条到状态栏是常见的需求,尤其在开发多文档界面(MDI)应用程序时,用户界面的反馈对用户体验至关重要。本文将详细介绍如何在VC++的MFC框架下,为状态栏增添一个进度条组件,提供实时的执行...

    Systray Progress Bar.zip_progress

    标题中的"Systray Progress Bar.zip_progress"表明这是一个与系统托盘区(Systray)相关的项目,特别地,它涉及到在任务栏的系统托盘区域显示进度条(ProgressBar)的功能。这种技术常用于告知用户某个后台进程的...

    WPF:将我们的应用程序与Windows 7任务栏集成(I)

    3. **任务栏进度条(Taskbar Progress Bar)**:任务栏上的进度条可以帮助用户了解程序的运行状态,如文件下载或上传进度。在WPF中,我们可以使用`TaskbarItemInfo`对象的`ProgressValue`属性和`ProgressBarState`...

    MFC 状态栏上显示进度条

    而Progress Control是状态栏中的一个特殊控件,用于向用户反馈操作的进度,如文件复制、下载或其他长时间运行任务的完成情况。本篇文章将深入探讨如何在MFC的状态栏上实现四种不同效果的进度条。 首先,我们需要...

    android通知栏常用方法以及进度条显示

    在Android开发中,通知栏(Notification)是一种向用户传达应用状态和信息的重要方式,而进度条(Progress Bar)则是展示任务执行进度的关键组件。本文将深入探讨如何在Android通知栏中使用常见方法以及如何显示...

    android demo,Progress进度条,DatePicker日期选择,导航栏及按钮的处理

    在Android开发中,创建用户友好的界面和交互是至关重要的,本`android demo`着重展示了如何处理Progress进度条、DatePicker日期选择器、导航栏以及按钮等常见组件的使用。下面将详细阐述这些知识点: 1. **Progress...

    mfc 状态栏显示进度条

    这就是在MFC应用程序中创建和使用状态栏进度条的基本流程。实际应用中,你可能还需要处理线程同步、错误处理以及更复杂的用户交互。通过结合多线程技术,如文件` MultiThread `所示,可以实现异步计算,同时保持用户...

    C语言 windows程序设计 工具栏、滑动条、进度条练习

    在Windows程序设计中,C语言常被用于创建各种桌面应用程序,包括那些包含用户界面元素如工具栏、滑动条(Slider)和进度条(Progress Bar)的程序。这些控件在用户交互中扮演着重要角色,提供了一种直观的方式来调整...

    带进度条的状态栏 vs2008

    而“带进度条的状态栏”则是在这个基础功能上增加了进度指示功能,能够为用户提供正在进行的操作进度反馈,比如文件加载、数据处理或者网络下载等长时间运行任务的完成情况。 状态栏上的进度条有两种主要类型:连续...

    教你如何为MFC程序添加进度条-----实例

    这个类是Windows API中的Progress Bar控件的包装,可以显示一个水平条形图,反映任务的完成程度。在创建MFC项目时,我们需要在资源编辑器中添加一个新的控件,并将其类型设置为Progress。 步骤一:在MFC项目的资源...

    状态栏加入进度条当打开文件的时候显示进度信息

    为了增强用户体验,我们有时需要在状态栏中添加一个进度条(Progress Bar),以便在执行耗时操作,如打开大文件时,向用户展示任务的进度。本教程将详细介绍如何在MFC的View视图中实现这一功能。 首先,我们需要...

    MFC_带进度条的状态栏

    在Windows应用程序开发中,Microsoft Foundation Class (MFC)库是一个强大的工具,它为开发者提供了创建桌面应用程序的便利。本篇文章将深入探讨如何在MFC应用中实现带进度条的状态栏,以此来提升用户体验并提供实时...

    基于java的导航栏和进度条

    在Java编程领域,导航栏(Navigation Bar)和进度条(Progress Bar)是用户界面(UI)设计中的关键组件,它们提供了良好的用户体验并帮助用户更好地理解应用程序的状态和操作流程。下面将详细阐述这两个组件的设计和...

    vc++ 建立进度条显示代码

    在VC++编程中,进度条通常用于提供用户界面反馈,让用户了解某个长时间运行任务的进度,比如文件传输或软件安装。进度条控件在MFC(Microsoft Foundation Classes)库中被实现为CProgressCtrl类,它是Windows API...

    Delphi为窗体状态栏添加进度条.rar

    本示例将详细介绍如何在Delphi窗体的状态栏(Status Bar)中添加一个进度条控件,以实现动态显示程序运行进度的功能。 首先,打开Delphi集成开发环境(IDE),创建一个新的VCL Forms Application项目。在设计界面中...

    弹出模式窗口显示进度条

    在IT开发领域,特别是在Windows应用程序设计中,"弹出模式窗口显示进度条"是一个常见的需求,主要用于提升用户体验,让用户能够直观地看到后台处理任务的进度,例如文件复制、下载或其他耗时操作。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics