用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧Visual C++

在任务栏上显示图标

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 20:30:07
在任务栏上显示图标
                                       阿伦工作室 邱理    Windows 95/Windows NT任务栏的右边是一状态区,Windows95/WindowsNT在其上显示时间和一些小图标,这些图标代表着特定的功能或程序,用鼠标单击、右击或双击这些图标,就会弹出功能菜单或程序窗口等。你也许想把自己的程序图标也放在任务栏的状态区上,很简单,VC++ 5.0提供了一个函数,让你很容易地实现该功能。    Shell_NotifyIcon()函数    该函数发送消息给系统在任务栏的状态区,增加、删除或修改图标。Shell_NotifyI con()有两个参数:    1. DWORD dwMessage    消息标志值,为以下三个中之一:    NIM_ADD    在任务栏状态区增加图标    NIM_DELETE 从任务栏状态区删除图标    NIM_MODITY 修改任务栏状态区的图标    2. PNOTIFYICONDATA pnid    指向NOTIFYICONDATA结构的指针。NOTIFYICONDATA结构如下:    typedef struct _NOTIFYICONDATA { // nid    DWORD cbSize; // NOTIFYICONDATA 结构的大小    HWND hWnd; //接收回调消息的窗口句柄    UINT uID; //自定义的图标标志值    UINT uFlags; //标志后面的三个数据成员哪个有效,    //可由NIF_ICON,NIF_MESSAGE和      NIF_TIP组合。    UINT uCallbackMessage; //回调消息    HICON hIcon; //图标句柄    char szTip[64]; //提示字符。当把鼠标移到任务栏    //状态区该图标上时,系统显示该字符    } NOTIFYICONDATA, *PNOTIFYICONDATA;    如何在任务栏状态区实现程序图标及其功能    1. 首先生成一个单文档的工程文件。    2. 在StdAfx.h 添加自定义的消息:     //回调消息     #define MYWM_NOTIFYICON WM_USER+1     //在任务栏状态区显示图标的消息    #define MYWM_SHOWAPPICONIC WM_USER+2    3. 在MainFrm.h 里添加定义消息处理函数说明,该部分看起来如下:    protected:    //{{AFX_MSG(CMainFrame)    afx_msg void OnSysCommand(UINT nID, LPARAM lParam); //手工加    afx_msg void OnMyIconNotify(WPARAM wParam, LPARAM lParam); //手工加    afx_msg void OnShowAppIconic(WPARAM wParam, LPARAM lParam); //手工加    afx_msg void OnClose(); //系统生成    //}}AFX_MSG    DECLARE_MESSAGE_MAP()    另外,需在MainFrm.h定义一开关值,记录程序窗口是打开或关闭状态:    BOOL boolWndHadShow;    4. 在MainFrm.cpp里实现消息映射和消息处理函数。消息映射部分看起来如下:    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)     //{{AFX_MSG_MAP(CMainFrame)    ON_MESSAGE(MYWM_NOTIFYICON, OnMyIconNotify)     ON_MESSAGE(MYWM_SHOWAPPICONIC, OnShowAppIconic)     ON_WM_SYSCOMMAND()     ON_WM_CLOSE()     //}}AFX_MSG_MAP    END_MESSAGE_MAP()    消息处理及相关函数如下所示:    //在任务栏状态区添加图标    BOOL MyTaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)    {    BOOL res;    NOTIFYICONDATA tnid;    tnid.cbSize = sizeof(NOTIFYICONDATA);    tnid.hWnd = hwnd;    tnid.uID = uID;    tnid.uFlags = NIF_ICON  NIF_TIP  NIF_MESSAGE;    tnid.uCallbackMessage = MYWM_NOTIFYICON;    tnid.hIcon = hicon;    if (lpszTip)     lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));    else     tnid.szTip[0]=‘

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:312.50000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号