首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在运行时切换Application.Mainform并调用MainformOnTaskBar导致Windows任务栏上的闪烁

在运行时切换Application.MainForm并调用MainFormOnTaskBar导致Windows任务栏上的闪烁是由于窗口切换导致的界面重绘问题。当切换主窗口并调用MainFormOnTaskBar方法时,Windows任务栏会重新绘制任务栏图标,从而导致闪烁现象。

为了解决这个问题,可以考虑以下几个方面:

  1. 双缓冲技术:使用双缓冲技术可以减少界面重绘带来的闪烁问题。在切换窗口前,可以先创建一个与主窗口相同大小的位图,将主窗口的内容绘制到位图上,然后再切换窗口。这样可以避免直接在屏幕上进行绘制,减少闪烁现象。
  2. 使用异步刷新:可以将任务栏图标的刷新操作放在一个异步线程中进行,避免在主线程中进行频繁的刷新操作。这样可以减少界面卡顿和闪烁现象。
  3. 调整窗口切换逻辑:可以考虑在窗口切换时,先隐藏当前窗口,再显示目标窗口。这样可以减少界面重绘的次数,从而减少闪烁现象。
  4. 使用系统提供的API:可以使用Windows提供的API来控制任务栏图标的刷新行为。例如,可以使用Shell_NotifyIcon函数来更新任务栏图标,避免频繁的刷新操作。

总结起来,解决运行时切换Application.MainForm并调用MainFormOnTaskBar导致Windows任务栏上的闪烁问题,可以通过使用双缓冲技术、异步刷新、调整窗口切换逻辑和使用系统提供的API等方法来减少界面重绘和刷新操作,从而减少闪烁现象的发生。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 清除Win7通知区域(Notification Area Icons)的无效图标

    一些程序在运行时会自动在任务栏通知区域(Notification Area Icons)里显示图标。只要在通知区域里呆过,就会被记录下来,即使这个软件已经删除,这个软件图标就会一直呆下去。那么怎么能够彻底删除这些已经失效的程序图标呢? 下面就来看看具体的方法: 点击开始菜单,在搜索框内输入“Regedit”并回车打开注册表编辑器,定位到HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify(为了以防万一,可以先将这部分的注册表内容导出备份:右键点击TrayNotify项,选择“导出”即可),接着删除下面“IconStreams”和“PastIconsStream”这两个键值,按F5刷新后退出注册表编辑器。修改后可以重新启动计算机或者同时按下“Ctrl+Shift+Esc”调出任务管理器,结束“explorer.exe”进程,稍等片刻再点击任务管理器上的“文件/新建任务”,输入“explorer”并确定,任务栏便会重新出现,且通知区域内那些失效的程序图标就会不见了。

    02

    Windows Longhorn_Windows优化

    一、系统优化设置。 1、删除Windows强加的附件: 1) 用记事本NOTEPAD修改/winnt/inf/sysoc.inf,用查找/替换功能,在查找框中输入,hide(一个英文逗号紧跟hide),将“替换为”框设为空。并选全部替换,这样,就把所有的,hide都去掉了, 2) 存盘退出, 3)再运行“添加-删除程序”,就会看见“添加/删除 Windows 组件”中多出了好几个选项;这样你可以删除好些没有用的附件 2、关掉调试器Dr. Watson; Dr.Watson是自带的系统维护工具,它会在程序加载失败或崩溃时显示。运行drwtsn32,把除了“转储全部线程上下文”之外的全都去掉。否则一旦有程序出错,硬盘会响很久,而且会占用很多空间。如果你以前遇到过这种情况,请查找user.dmp文件并删掉,可能会省掉几十M的空间。这是出错程序的现场,对我们没用。然后打开注册表,找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug子键分支,双击在它下面的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就彻底来取消它的运行了。 另外蓝屏时出现的memory.dmp也可删掉。可在我的电脑/属性中关掉BSOD时的DUMP 3、关闭“系统还原”:鼠标右健单击桌面上的“我的电脑”,选择“属性”,找到“系统还原”,如果你不是老噼里啪啦安装一些软件(难道你比我还厉害??),你也可以去掉,这样可以节省好多空间。

    02

    Android面试

    要想知道如何使用多进程,先要知道Android里的多进程概念。一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。我们知道进程是系统分配资源和调度的基本单位,所以每个进程都有自己独立的资源和内存空间,别的进程是不能任意访问其他进程的内存和资源的。那如何让自己的应用拥有多个进程?很简单,我们的四大组件在AndroidManifest文件中注册的时候,有个属性是android:process 这里可以指定组件的所处的进程。默认就是应用的主进程。指定为别的进程之后,系统在启动这个组件的时候,就先创建(如果还没创建的话)这个进程,然后再创建该组件。你可以重载Application类的onCreate方法,打印出它的进程名称,就可以清楚的看见了。再设置android:process属性时候,有个地方需要注意:如果是android:process=":deamon",以:开头的名字,则表示这是一个应用程序的私有进程,否则它是一个全局进程。私有进程的进程名称是会在冒号前自动加上包名,而全局进程则不会。一般我们都是有私有进程,很少使用全局进程。他们的具体区别不知道有没有谁能补充一下。 使用多进程显而易见的好处就是分担主进程的内存压力。我们的应用越做越大,内存越来越多,将一些独立的组件放到不同的进程,它就不占用主进程的内存空间了。当然还有其他好处,有心人会发现Android后台进程里有很多应用是多个进程的,因为它们要常驻后台,特别是即时通讯或者社交应用,不过现在多进程已经被用烂了。典型用法是在启动一个不可见的轻量级私有进程,在后台收发消息,或者做一些耗时的事情,或者开机启动这个进程,然后做监听等。还有就是防止主进程被杀守护进程,守护进程和主进程之间相互监视,有一方被杀就重新启动它。应该还有还有其他好处,这里就不多说了。 坏处的话,多占用了系统的空间,大家都这么用的话系统内存很容易占满而导致卡顿。消耗用户的电量。应用程序架构会变复杂,应为要处理多进程之间的通信。这里又是另外一个问题了。

    05
    领券