• flashget > "网络蚂蚁"和"FlashGet"的悬浮窗口的实现
  • "网络蚂蚁"和"FlashGet"的悬浮窗口的实现

    免费下载 下载该文档 文档格式:DOC   更新时间:2002-10-02   下载次数:0   点击次数:1
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:doc
    文档作者:
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    "网络蚂蚁"和"FlashGet"的悬浮窗口的实现

    最近有网友问道如何用 Delphi 实现"网络蚂蚁"和"FlashGet"的悬浮窗口,笔者对使用到的相关技巧做了整理如下:
    1.悬浮窗口
    Delphi 的 TForm.FormStyle 具有 fsStayOnTop 属性,但只是对其程序本身而言的,也就是说只在此应用程序本身的窗口中是前端显示的,其他的程序的窗口仍然可以覆盖此类型的窗口.这是应为此窗口的父窗口是 TApplication .要让悬浮窗口独立的显示在屏幕前端,应在创建窗口时将其父窗口设置为"桌面".
    Form2 := TForm2.CreateParented(GetDesktopWindow);
    2.允许 Client 区域拖动窗口
    这只要捕获窗口的 WM_NCHITTEST 消息,将客户区HitTest(HTCLIENT)变成标题栏的HitTest(HTCAPTION)就可以了.
    3.半透明
    Windows2000/XP 给窗口增加了WS_EX_LAYERED 属性,并通过 APISetLayeredWindowAttributes(); 来设置此属性的详细信息.Delphi 6 的 Forms 单元已经支持此窗口属性.
    property AlphaBlend default False; // 是否使用半透明效果
    property AlphaBlendValue default 255; // 透明度 0..255
    property TransparentColor default False; // 是否使用穿透色
    property TransparentColorValue default 0; // 穿透色
    (*此功能仅 Windows2000/XP 支持,不要在 Win9x 尝试此特效)
    4.接收来自 Shell 的鼠标拖拽
    这将使用到 ActiveX 单元的 IDropTarget 接口,并扩展你的 Form 类.
    TForm2 = class(TForm, IDropTarget)
    ....
    end;
    并在窗口拥有句柄后,用 RegisterDragDrop() 注册成为 DragDrop 接受目标.
    以下是实现的代码:
    unit DropBin;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, Menus, ExtCtrls, ActiveX, ComObj;
    type
    TfrmDropBin = class(TForm, IDropTarget)
    private
    procedure WMNCHitTest(var Msg:TWMNCHitTest); message WM_NCHITTEST;
    protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CreateWnd; override;
    procedure DestroyWnd; override;
    procedure DoClose(var Action: TCloseAction); override;
    // DragDrop 支持
    function DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall;
    function IDropTarget_DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall;
    function IDropTarget.DragOver = IDropTarget_DragOver; // 解决 IDropTarget.DragOver 与 TForm.DragOver 冲突问题

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • flashget官方下载  flashget下载  解除flashget自动运行  快车flashget  flashget快车官方下载  flashgetnetwork  快车flashget3.0  网际快车flashget  快车flashget4.0