任务栏程序-02

人真是少啊,看第一部分的人寥寥无几,这是人气凋零啊!牢骚发完了。OK,续上贴。


对于初学者来说,定义系统热键(hotkey)好像是一项很难的技术,实际上在Delphi里,可以很轻松的完成。依本例来说,声明两个atom类型全局变量aF9与aF10。
var
  aF9,aF10  : ATOM;

在Form1上拖放一个WebBrowser控件(在InterNet中),名字为Web1。在form的create事件加入如下代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
  aF9:=GlobalAddAtom('MyhotkeyF9');      //定义元素
  aF10:=GlobalAddAtom('MyhotkeyF10');
  RegisterHotKey(Handle,aF9,MOD_SHIFT,vk_F9);   //注册热键  Shift + F9
  RegisterHotKey(Handle,aF10,MOD_SHIFT,vk_F10); //注册热键  Shift + F10

end;

这样就定义好了热键,还需要相应热键的函数。windows的消息传递机制请参阅相关书籍,我这里只是讲对应于Delphi的手段。在form的public处加入以下
public
procedure WMhotkeyhandle(var msg:Tmessage);message wm_hotkey; //响应敏感键按键消息

在{$R *.dfm}后加入:
procedure TForm1.Wmhotkeyhandle(var msg:Tmessage);
begin
  if (msg.LParamHi=vk_F9) and (msg.LparamLo=MOD_SHIFT) then
    Web1.Navigate('http://appnews.qq.com/cgi-bin/news_qq_search?city=长春')
  else if (msg.LParamHi=vk_F10) and (msg.LparamLo=MOD_SHIFT) then
    Self.Close ;
end;

运行一下试试,按Shift+F9就会连接到天气预报;Shift+F10就会退出。

这样我们的SideBar已经具有雏形了,所欠的还有那个漂亮的时钟。那个bmpclock控件是国人作的,很好的,只是比较费资源,在网上很容易就找到。你也可以用其他的什么时钟或者是LED形式显示数字时钟。

最后一点比较重要的就是需要安装一个透明控件,把它放在Web1的上面,这样才不会有那些讨厌的右键菜单出现。透明控件的源代码如下(我在CSDN中的名字就是yuzhan):

{
   欢迎使用透明控件V1.0    Developed by yuzhan(CSDN)
   继承自TWinControl,主要功能是用来挡住一些不想让别人碰的东西,但是仍然会保持原样。

}
unit Transparent;

interface

uses
  SysUtils, Classes, Controls, Windows;

type
  TTransparent = class(TWinControl)
  private
    { Private declarations }
  protected

  public
    Constructor Create(AOwner: TComponent);override;
    procedure CreateParams(var Params: TCreateParams);override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

constructor TTransparent.Create(AOwner: TComponent);
begin
  ControlStyle := ControlStyle - [csOpaque];
  inherited;
end;

procedure TTransparent.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
  { 完全重画 }
  Style := Style and not WS_CLIPCHILDREN;
  Style := Style and not WS_CLIPSIBLINGS;
  { 增加透明 }
  ExStyle := ExStyle or WS_EX_TRANSPARENT;
  end;
end;

procedure Register;
begin
  RegisterComponents('Win32', [TTransparent]);
end;

end.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值