zoukankan      html  css  js  c++  java
  • Delphi实现Windows的气泡提示样式

    其实也不复杂,主要使用到shellAPI下的TNotifyIconData这个结构体:

        

    typedef struct _NOTIFYICONDATA {    
        DWORD cbSize;        //结构体的大小,以字节为单位    
        HWND hWnd;           //窗口的句柄    
        UINT uID;            //应用程序定义的任务栏图标的标识符    
        UINT uFlags;         //此成员表明具体哪些其他成员为合法数据    
        UINT uCallbackMessage;   //应用程序定义的消息标示    
        HICON hIcon;         //增加、修改或删除的图标的句柄    
        TCHAR szTip[64];     //指向一个以/0结束的字符串的指针    
        DWORD dwState;       //Version 5.0,图标的状态    
        DWORD dwStateMask;   //Version 5.0. 指明dwState成员的那些位可以被设置或者访问    
        TCHAR szInfo[256];   //指向一个以/0结束的字符串的指针,字符串的内容为气球提示内容    
        union {    
            UINT uTimeout;   //表示气球提示超时的时间,单位为毫秒,此时间后气球提示将消失    
            UINT uVersion;   //用来设置使用Windows 95 还是 Windows 2000风格的图标消息接口    
        };    
        TCHAR szInfoTitle[64];   //指向一个以/0结束的字符串的指针。字符串的内容为气球提示的标题    
        DWORD dwInfoFlags;   //设置此成员用来给气球提示框增加一个图标,增加的图标出现在气球提示标题的左侧    
        GUID guidItem;       //保留    
        HICON hBalloonIcon;  //用于Windows Vista或更高版本的自定义气球图标    
    } NOTIFYICONDATA, *PNOTIFYICONDATA;   

    具体怎么用,给个函数 ->

    procedure FillDataStructureandCreate(shint:string;dwFlags:Cardinal);
    begin
      with FsysIcon do begin
          cbSize:=SizeOf(TNotifyIconData);
          Wnd:=Handle;
          uID:=Application.Icon.Handle;
          uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP or NIF_INFO;
          hIcon:=Application.Icon.Handle;
          StrPCopy(szInfoTitle,'标题');
          StrPCopy(szInfo,shint);//shint为内容
          dwInfoFlags:=dwFlags;//提示的图标
          uCallbackMessage:=CM_ICONDATA; //自定义的消息处理函数
          uTimeout:=15;
          uVersion:=NOTIFYICON_VERSION_4;
      end;
    end;

    调用

    首先得添加

      

          FillDataStructureandCreate('右击重新显示窗体',NIIF_INFO);
          Shell_NotifyIcon(NIM_ADD,@FsysIcon);

    自定义提示

      

            FillDataStructureandCreate('服务已启动',NIIF_INFO);
            Shell_NotifyIcon(NIM_MODIFY,@FsysIcon);

    最后用完删除

      

    Shell_NotifyIcon(NIM_DELETE,@FsysIcon);

    其中 FsysIcon是TNotifyIconData类型.

  • 相关阅读:
    Java8实战之Stream流式操作
    类、对象、引用
    java对象的四种引用:强引用、软引用、弱引用和虚引用
    《将博客搬至CSDN》
    **JAVA参数传递方式 (按值传递与引用传递区别)
    JavaWeb--ServletContext
    HttpSessionListener的用法
    SpringMVC优雅的获取HttpSevletRequest及HttpServletResponse简录
    setnx
    JVM命令工具开发
  • 原文地址:https://www.cnblogs.com/Master-Qi/p/11114541.html
Copyright © 2011-2022 走看看