打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VC中系统托盘图标的实现

本文以实例代码的形式讲述了在VC中系统托盘图标的实现。

 

技术实现:

 

VC中实现系统托盘图标主要用到一个Shell_NotifyIcon系统API。在本文中我们以对话框程序为例子实现系统托盘图标,步骤如下:

 

1.  StdAfx.h中定义消息ID,如:

   #define MYWM_NOTIFYICON  WM_USER+1

2.  定义一个全局NOTIFYICONDATA变量,如:

   NOTIFYICONDATA  g_nd;

3.  实现添加系统托盘图标函数,如:

   void CZTXClientDlg::AddSystrayIcon()

{

        // 将图标放入系统托盘

        g_nd.cbSize = sizeof (NOTIFYICONDATA);

        g_nd.hWnd = m_hWnd;

        g_nd.uID = IDR_MAINFRAME;

        g_nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;

        g_nd.uCallbackMessage= MYWM_NOTIFYICON;

        g_nd.hIcon = m_hIcon;

        strcpy(g_nd.szTip, "知天下娱乐中心[V1.1]");

        Shell_NotifyIcon(NIM_ADD, &g_nd);

}

4.  实现删除系统托盘图标函数,如:

   void CZTXClientDlg::DelSystrayIcon()

{

        Shell_NotifyIcon(NIM_DELETE, &g_nd);

}

5.  重载WindowProc函数,如:

   LRESULT CZTXClientDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

        // TODO: Add your specialized code here and/or call the base class

        switch( message )

        {

        case MYWM_NOTIFYICON:

            if(lParam==WM_LBUTTONDBLCLK)

            {

                 AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);

            }else if(lParam==WM_RBUTTONDOWN)

            {

                 CMenu menu;

                 //载入事先定义的选单

                 menu.LoadMenu(IDR_TRADEMEMU);

                 CMenu*pMenu=menu.GetSubMenu(0);

                 CPoint pos;

                 GetCursorPos(&pos);

                 //加入SetForegroundWindow的目的为使用户点菜单之外时菜单可以消失

                 ::SetForegroundWindow(m_hWnd);

                pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());

            }

            break;

        }

        return CDialog::WindowProc(message, wParam, lParam);

}

6.  OK,现在在我们的OnInitDialog函数中加入如下代码:

   AddSystrayIcon( );

7.  在窗口关闭函数中加入如下代码:

   DelSystrayIcon( );

 

经测试可行!非常感谢!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
托盘编程全接触
玩转VC++系统托盘程序(WIN8)
VC++如何在托盘区显示程序图标 >> 瀑布集
VC中程序最小化到托盘
系统托盘编程_平台/系统_VC技术文章
vC++ 系统托盘图标实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服