当前位置: 首页 > news >正文

兰山区网站建设推广成都网页设计班

兰山区网站建设推广,成都网页设计班,曲靖高端网站制作,常用的h5制作工具有哪些问题来源 最近在写一个播放器,想到以前其他平台的播放器,在隐藏主界面后,如最小化为MiniBox或隐藏到托盘后,切换歌曲操作很麻烦,快捷键经常被这个那个软件占有,不方便,而且MiniBox又在我本就不…

问题来源

最近在写一个播放器,想到以前其他平台的播放器,在隐藏主界面后,如最小化为MiniBox或隐藏到托盘后,切换歌曲操作很麻烦,快捷键经常被这个那个软件占有,不方便,而且MiniBox又在我本就不大的屏幕上晃来晃去,碍眼,于是有了这样的想法。

经过搜索一番,发现实现起来很简单,于是写了一些代码,实现了这个功能,以下为效果图:
在这里插入图片描述

任务栏分析

本次要操作的,是将包含了一些控件的窗体置入任务栏,实际上,任务栏分了很多区域,包括时钟区,窗口最小化的区,托盘区等等,这次计划置入的是窗口切换区。

任务栏最外层的壳A,壳A包含了以上说的区域。
在这里插入图片描述
其下再有窗口切换区的壳B
在这里插入图片描述
壳B下再有一个区为窗口最小化存放的位置C,就像俄罗斯套娃一样,分为一层又一层
在这里插入图片描述
我们的窗口F,就要放在和C平级的位置,也就是说,窗口是放在B上面的,B是窗口F的承载容器。
这里注意,B和C在我的截图里看起来差不多,其实不一样,因为B是C的容器,而此时只有C一个子类,因此看起来差不多,但是我们可以把C的大小进行调整,留出一些位置给我们的窗口F。

这样我们得到的结构就可以如下图一样:
在这里插入图片描述
首先获取A,B,C三个层的句柄,记为:MainH, FirH, SecH,类型为THandle。
然后获取A,B,C三个层的区域,记为:MainR, FirR, SecR,类型为TRect。
然后使用MoveWindow函数,调整层次C的宽度,预留一部分位置放置窗口F。
然后将窗体置入,并调整位置。
最后,在程序退出时候,将C层宽度调整回来,恢复正常状态。

代码如下

unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varMainH, FirH, SecH: THandle;MainR, FirR, SecR: TRect;Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
beginMainH := FindWindow(PChar('Shell_TrayWnd'), nil); //Shell_TaryWnd句柄,A层FirH := FindWindowEX(MainH, 0, 'ReBarWindow32', nil); //ReBarWindow32句柄,B层SecH := FindWindowEX(FirH, 0, 'MSTaskSwWClass', nil); //MSTaskSwWClass最小化窗口层句柄,C层GetWindowRect(MainH, MainR);GetWindowRect(FirH, FirR);GetWindowRect(SecH, SecR);MoveWindow(SecH, 0, 0, SecR.Right - SecR.Left - Self.Width, SecR.Bottom - SecR.Top, True); //预留放置窗口的位置Self.ParentWindow := FirH;MoveWindow(Self.Handle, SecR.Right - SecR.Left - Self.Width + 1, (FirR.Bottom - FirR.Top - Self.Height) div 2, Self.Width, Self.Height, True);Self.Visible := True;
end;procedure TForm1.Button2Click(Sender: TObject);
beginMoveWindow(SecH, 0, 0, SecR.Right - SecR.Left, SecR.Bottom - SecR.Top, True);Application.Terminate;
end;end.

设计期界面如下

在这里插入图片描述

运行效果如下

在这里插入图片描述
为了让程序透明化显示,用了窗体的穿透属性,窗体配置如下:

object Form1: TForm1Left = 0Top = 0BorderStyle = bsNoneCaption = 'Form1'ClientHeight = 30ClientWidth = 100Color = clFuchsiaTransparentColor = TrueTransparentColorValue = clFuchsiaFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePixelsPerInch = 96TextHeight = 13object Button1: TButtonLeft = 4Top = 5Width = 40Height = 20Caption = 'DO'TabOrder = 0OnClick = Button1Clickendobject Button2: TButtonLeft = 56Top = 5Width = 40Height = 20Caption = 'Close'TabOrder = 1OnClick = Button2Clickend
end

以上便是Delphi中对于置入窗体到任务栏的基本方法,希望对后来者有用

【参考文章】
https://blog.csdn.net/Factor_/article/details/84799332
https://www.cnblogs.com/luoshupeng/archive/2011/08/23/2151081.html

http://www.yayakq.cn/news/848065/

相关文章:

  • 苏州专业做网站的公司保定到沧州
  • 上海网站搭建公司wordpress 多占点
  • 兰州网站建设模板下载湛江有帮公司做网站
  • 网站网页建设论文温州网站改版公司
  • 在常熟市公司网站建设哪家好做网站还需要续费
  • 华龙建设部网站查不到ppt代做网站
  • 在哪个网站可以找做海报的模板重庆网站建设优斗士
  • 哈尔滨模板建站品牌深圳百度网站建设
  • 移动网站建设指南天津美容网站建设
  • 无锡哪里有建设网站wordpress 内网
  • 营销方案网站制作相册软件下载
  • 开o2o网站需要什么手续电商公司简介模板
  • 网站开发与维护的相关大学做外贸需要用什么网站
  • 云南建设网站首页可以打开任何网站的软件
  • 威海建设招聘信息网站淄博企业网站设计公司
  • 静态网站挂马怎样用ps做网站
  • 广东省建设工程金匠奖公布网站300元建站
  • 淘宝客api调用到网站凡客诚品是什么牌子
  • 显示网站建设中做化妆品的网站有哪些
  • 快速网站价格网站上截小屏幕 怎么做
  • 做区域县城招聘网站青岛网站建设哪家好
  • 怎么用7牛云做网站建设网上银行怎么开通
  • 保定网络营销网站济南建站公司效果
  • 骆诗网站建设大埔县住房和城乡规划建设局网站
  • 个人网站首页布局网站建设大作业感想
  • 上海专业建站公江西中创建设工程有限公司网站
  • 阿里云1M做网站wordpress 数据库ip
  • 网站什么认证对做电商好长沙电商运营公司排名
  • 做pc网站会连带手机版广州网站开发定制公司
  • 网站如何做反爬品牌网站建设哪个好