C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)
C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)
依旧是在扩展WMP播放器功能时所遇到的问题,我想要实现Windows7所带来的任务栏特性,直接看图。
以网易云音乐为例,①能够在任务栏的略缩图显示专辑封面(或则其他想要的略缩图)②能够有快捷按钮。当然这只是我暂时想要实现的功能,比如还有在任务栏显示进度条状态,本文不涉及,如果感兴趣这里倒是有个不错的Demo可供参考学习https://my.oschina.net/Tsybius2014/blog/716122。
下面我就直接开始,我还是用之前写的WMP播放器做为演示,为了更直观和简洁,不实现按钮的功能细节部分。
一、必要库文件的引入
需要引入3个库文件:Microsoft.WindowsAPICodePack、Microsoft.WindowsAPICodePack.Shell、PresentationCore
以及命名空间:using Microsoft.WindowsAPICodePack.Taskbar;
前两个库文件需要下载:http://download.csdn.net/download/wanghanltd/2176242
添加完成后:
二、创建任务栏按钮以及单击事件
private void Form1_Shown(object sender, EventArgs e)
{
//播放按钮
ThumbnailToolbarButton btnPlayPause = new ThumbnailToolbarButton(Properties.Resources.Play, "Play");
btnPlayPause.Enabled = true;
btnPlayPause.Click += new EventHandler(btnPlayPause_Click);
//下一首按钮
ThumbnailToolbarButton btnNext = new ThumbnailToolbarButton(Properties.Resources.Next, "Next");
btnNext.Enabled = true;
btnNext.Click += new EventHandler(btnNext_Click);
//上一首按钮
ThumbnailToolbarButton btnPre = new ThumbnailToolbarButton(Properties.Resources.Pre, "Previous");
btnNext.Enabled = true;
btnPre.Click += new EventHandler(btnPre_Click);
//添加按钮
TaskbarManager.Instance.ThumbnailToolbars.AddButtons(this.Handle, btnPre, btnPlayPause, btnNext);
//裁剪略缩图,后面提到
TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(AxWmp.Location, AxWmp.Size));
}
//这里只做效果演示,不实现功能
void btnPlayPause_Click(object sender, EventArgs e)
{
MessageBox.Show("播放");
}
void btnPre_Click(object sender, EventArgs e)
{
MessageBox.Show("上一首");
}
void btnNext_Click(object sender, EventArgs e)
{
MessageBox.Show("下一首");
}
至于为什么要放在Form_Shown事件中,这点我还太清楚,或许是和窗口的绘制顺序有些关系吧。绑定按钮的单击事件时要是用<ThumbnailButtonClickedEventArgs>进行强制转型。最后将三个按钮完成添加。
三、裁剪想要的略缩图
private void SetTaskbarthumbnail()
{
//设定裁剪区域坐标为AxWmp控件的X、Y、宽、高
TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(AxWmp.Location.X, AxWmp.Location.Y, AxWmp.Size.Width, AxWmp.Size.Height));
}
可以在Form_Show或则窗口更新时,重新设置缩略图的显示位置。
C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)相关推荐
- Windows7 任务栏功能的开发
此篇文章为原创,禁止转载 此篇文章仅限于C++,托管代码开发请参考Windows API Code Pack for the Microsoft .NET Framework. 本文参考至: MSDN ...
- bootstrapV4.6.0 - 导航栏开发 (案例篇)
bootstrapV4.6.0 - 导航栏开发 (案例篇) 经验点: 导航栏背景色 ((全window宽度)); 导航栏字体大小设置: 导航栏背景色设置: 导航栏下拉菜单的下拉效果(click改为ho ...
- 电脑点击计算机只能在任务栏显示桌面,windows7任务栏显示桌面按钮不见了怎么办?...
习惯了在使用windows xp系统时候,经常用到任务栏的快速显示桌面按钮,但安装windows7系统后,会发现这个按钮不正常了,当电脑同时打开多个窗口时,想回到桌面就比较麻烦,需要将所有已经打开的窗 ...
- 鸿蒙版瑞幸咖啡开发日记(三)购物车结算栏开发
鸿蒙版瑞幸咖啡开发日记之已点咖啡结算栏开发 1.整体设计思路 2.购物车结算栏布局设计 2.1 右侧购物车图标 2.2 购物车结算栏 2.3 已点咖啡数量圆圈 2.4 已点咖啡模板 这里我实现的效果其 ...
- 微信小程序 自定义导航栏,只保留右上角胶囊按钮
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. navigationStyle 导航栏样式,仅支持以下值: default 默认样式 custom 自定义导航 ...
- Application Desktop Toolbars 桌面工具栏
Application Desktop Toolbars 桌面工具栏(1) An application desktop toolbar (also called an appbar) is a wi ...
- win11点击任务栏音量、无线、电池按钮无反应
win11才发布,系统会有很多bug,比如点击任务栏音量.无线.电池按钮无反应,可以通过联想一个"关闭/启用window10咨询和兴趣工具"插件就可以解决. 点击链接 https: ...
- chrome点击书签栏书签_在Google Chrome浏览器中使用工具栏按钮访问您的书签
chrome点击书签栏书签 Would you love to reduce the Bookmarks Toolbar to a single button in Chrome and have t ...
- AutoCAD二次开发三种添加插件按钮的方法
在上一篇关于AutoCAD的文章中,我将很多关于CAD的博客相关资源进行了说明,这一篇文章我将介绍如何在AutoCAD中的ribbon中添加相应的按钮.就是下面这种按钮: PS:在开发中我们最好使用中 ...
最新文章
- SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题?
- 国内丨人工智能(AI)引发的中国经济新动能
- OpenWrt-DreamBox 20120201下设置二级路由
- MongoDB存储文件之GridFS
- 工厂设计模式和策略设计模式_设计模式:策略
- Java——操作集合的工具类:Collections
- binlog2sql使用总结
- DHCP+VTP(实验讲解+配置)
- (99)FPGA ROM实现(V实现)
- ide循环执行用例 selenium_Selenium Web自动化Page Object设计模式——循环执行测试用例...
- 应用COMSOL Multiphysics分析水平井压裂裂缝应力干扰现象
- django:自动生成接口文档
- 两位共阳极数码管c语言,89c51驱动两位共阳极数码管倒计时显示程序,60秒到30秒能实现,但从30秒到90秒不能实现,请高手帮忙!...
- hive 中创建表的三种方式
- Python趣味篇:字符串中的趣味瞬间
- 好人品的八个标准,你有几个?
- 用库卡机器人编程写字_KUKA机器人的操作与基本运动编程(学员必备)
- ReactNative ./gradlew assembleRelease打包失败Duplicate file
- Win10 取消百度输入法 Shift+Space 全角半角切换
- PTA(三十三)面向对象程序设计 第五章 作业 7-4 分钟秒钟的时间相减 (30 point(s))
热门文章
- 顺序表的顺序存储表示
- Excel同一单元格多数据如何求平均数
- 多路复用,讲的很明白
- Hugging Face(1)——Transformer Models
- Python到底是干啥的?
- TensorFlow-神经网络初体验
- 在线教育项目02_前端知识(es6、vue)
- db2 replace函数的用法_48R软件数据的基本处理之删除重复数据(duplicated()、unique()、distinct()函数)...
- Android-内存泄露知识详解
- 计算机网络:BGP路由协议