今天看了一下两个日历软件的界面实现,一个是老外的ADC,还有个是国产的鱼鱼桌面日历秀,它们都有一个特点是,能把日历显示在桌面最底层,就算你用鼠标在上面点,划,都是相当于直接点在桌面上,但是视觉效果上,它们又是确实存在的。
大概看了一下,ADC的实现比较简单,就是把Wallpaper截下来,然后把自己的日历内容,Todo list都画到上面去,生成一个新的bmp文件,然后,“啪”一下,在后面偷偷把Wallpaper换成那张bmp。如果本来没有Wallpaper的,就直接把底层颜色截下来再画,就是这样。另外再添加个鼠标钩子,估计用线程钩子就够用了,钩住Explorer.exe上的双击事件,判断一下鼠标的坐标,在那个日历的区域内,就做出相应的反应,比如弹出个对话框之类的。另外有一点,是要截获桌面主题修改的事件(或消息),免得那张bmp的内容没有跟着换,用户就不干了。还有就是,在桌面边缘它会添加一个任务栏,是看起来半透明的样子,粗略地观察了一下,是这样处理的:某点像素值有RGB三部分,每部分分别加上一个值成为一个新的值,至于加多少,如果是00,则加0x4D,如果是80,则加0x26,如果是FF,则不加,估计是这样的均匀分布,最后造成一种半透明的视觉效果。总之,给人有点骗人的感觉,但是,它实现方法比较简单,普通用户谁去管它是怎么做的,看起来做到这个外观样子了就行了。
鱼鱼的我就比较晕了,只是才翻了MSDN发现的,设置几个窗口的扩展属性可以实现鼠标穿透,加上WS_EX_LAYERED和WS_EX_TRANSPARENT就可以,再调用一下SetLayeredWindowAttributes设置一下透明度,就可以了,把窗口设成一开始就不激活,把任务栏上的按钮隐藏,就基本达到要求了。它的半透明效果基本上是用图片实现的,用了换肤的技术,把PNG图片用GDI+画上去,PNG可以有透明,并且色彩数比GIF多,GDI+可以处理PNG。不过,它还有点牛的地方是,如果设成普通的鼠标不穿透的,它居然也能把窗口停在最底下,不知道这点是怎么实现了,观察了半天的它的消息和窗口风格设置,都没看出个所以然了。但是我想,这样的功能,应该网上已经有很多讨论和代码了吧。
分享到:
相关推荐
在Java实现简单日历小程序中,我们还需要创建一个主界面类CalendarFrame,用于界面的实现。这个类继承了JFrame类,并实现了ActionListener接口。我们在这个类中创建了一个JLabel数组,用于显示日历信息,一个...
尤其是桌面日历软件,以其直观的界面、便捷的操作以及丰富的功能,深受广大用户的喜爱。本文将深入探讨桌面日历软件的特性、功能以及如何有效利用它提升工作和生活效率。 一、桌面日历软件的优势 1. **直观展示**...
Outlook是一款广泛使用的电子邮件和日历管理软件,其日历界面设计得既直观又高效,因此许多开发者希望在自己的应用程序中实现类似的用户体验。本项目就是针对这一需求,提供了.NET下的一个仿Outlook日历界面的实现,...
4. **界面设计**:良好的用户体验是软件的一大特点,农历日历软件可能拥有简洁明了的界面设计,让用户能够快速找到所需信息,同时提供自定义设置,允许用户根据个人喜好调整界面颜色和布局。 5. **提醒功能**:除了...
《教学日历自动生成软件详解》 教学日历是教师和学生管理课程安排的重要工具,一个高效的教学日历自动生成软件能极大地简化这一过程。本文将深入探讨如何利用这款特定的软件来创建和管理教学日历,以及可能的优化...
在IT行业中,日历软件是日常工作和生活中的重要工具,它可以帮助我们管理时间,规划日程,提高效率。本主题涉及的是一款名为“日历软件”的应用,它带有激活码功能,意味着用户需要通过特定的激活码来解锁全部功能。...
【C# WebForm 仿日历排班、值班软件】是一种基于C#编程语言和WebForm技术开发的应用程序,主要用于实现日历样式的工作排班和值班管理功能。该软件使用了Visual Studio 2008作为开发环境,而数据存储方面则选择了...
本项目"仿vista风格的日历软件"是利用C#进行开发的一个实例,它展示了如何用C#来创建具有美观界面和功能丰富的日历应用。 该软件模仿了微软Windows Vista操作系统中的日历视图,提供了用户友好的界面和交互体验。...
通过对 Android 系统的发展历程和前景的研究,对 Android 日历软件的发展现状进行分析,并设计和实现一款基于 Android 的日历提醒软件。 知识点一:Android 系统的发展历程 Android 是一种基于 Linux 的开源操作...
这款“自制日历软件”源码提供了一个基础的实现,具有透明窗体功能,使得软件在运行时不会过于突兀,对用户界面的其他元素造成干扰。 一、日历功能详解 日历功能是此类软件的核心,它通常包括查看当前日期、切换...
在Android平台上设计和实现日历提醒软件是一项技术性较强的任务,涉及到多个关键知识点。这款软件的目的是为了帮助用户更有效地管理他们的日常计划和事件提醒,从而提高效率。在这个项目中,开发者将运用Java编程...
3. **自定义设置**:用户可以调整界面颜色、字体大小,甚至添加个性化的背景图片,打造符合个人审美的日历界面。 4. **事件分类**:为不同的事务设置类别,例如工作、家庭、个人等,便于管理和查找。 5. **提醒功能*...
总之,“日历记事软件代码”项目涉及到了Android应用开发的多个关键领域,包括但不限于Android SDK的使用、日历API的集成、自定义视图的绘制、提醒系统的实现、文件I/O操作以及用户界面设计。这些知识点对于任何想要...
总之,日历控件在软件开发中扮演着重要角色,它不仅需要具备基本的日期选择功能,还要注重用户体验,提供美观、直观且易于操作的界面。开发者可以通过各种工具和框架来实现这一目标,同时考虑到跨平台兼容性和扩展性...
【标题】"JAVA编写的日历记事本 实现日历及记事本功能" 描述了一款基于Java编程语言开发的应用程序,该程序集成了日历和记事本两大功能。在Java中,这样的应用通常涉及到GUI(图形用户界面)设计、事件处理以及数据...
本文对基于 Android 的日历提醒软件的设计和实现进行了深入分析和研究,包括 Android 操作系统的发展历程和前景、了解 Android 日历软件发展的现状、设计 Android 日历软件的相关功能、深入分析实现 Android 日历的...
总之,"c#实现的仿Vista日历源代码"是一个有价值的参考资料,它涵盖了C#的Windows Forms编程、事件处理、用户界面设计、数据绑定以及文件操作等多个方面。对于C#初学者和有经验的开发者来说,研究这段代码都能收获颇...
同步功能是现代日历软件的另一关键特性,它能将用户的日程数据与云服务同步,实现多设备间的无缝衔接。例如,通过iCloud或其他云服务,用户在电脑上设置的事件可以在手机和平板上即时更新,确保信息一致性。 安全性...
本项目是一套基于Java Swing实现的日历记事本系统,主要针对计算机相关专业的正在学习java的学生与需要项目实战练习的Java学习者。 包含:项目源码、报告文档等。 项目都经过严格调试,确保可以运行! 该系统功能...
这个项目,名为“日历记事本实现”,是基于Java编程语言设计的,旨在提供一个GUI(图形用户界面)来展示日历,并且能够支持在日历上添加事件的功能。这是一个典型的课程设计项目,有助于学生理解和掌握Java GUI编程...