C#如何使用右下角托盘图标notifyIcon

1 拖放一个NotifyIcon控件,并设置图标,还有显示的文字

 

2 双击这个控件,即当最小化了主窗体,然后双击这个右下角图标的时候,要显示主窗体(大部分程序的用户体验都是这样干的,比如QQ,双击图标要打开主窗体)

 

3 在主窗体最小化的事件中添加逻辑(最小化事件是包含在Form的SizeChanged事件中的),当最小化的时候,隐藏主窗体,同时显示右下角图标

 

4 如果要显示图标的提示,则像下面这样使用ShowBalloonTip方法即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以在MFC对话框的OnInitDialog()函数中添加以下代码来实现该功能: ```cpp // 加入以下头文件 #include "Shellapi.h" // 在OnInitDialog()函数中添加以下代码 NOTIFYICONDATA nid; // 定义托盘图标结构体 nid.cbSize = sizeof(NOTIFYICONDATA); nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); nid.hWnd = this->GetSafeHwnd(); nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; nid.uCallbackMessage = WM_USER_SHELLICON; lstrcpy(nid.szTip, _T("您的应用程序名称")); Shell_NotifyIcon(NIM_ADD, &nid); // 在托盘区添加图标 ShowWindow(SW_HIDE); // 隐藏对话框窗口 ``` 此外,您还需要添加以下消息映射函数: ```cpp BEGIN_MESSAGE_MAP(CYourDialog, CDialogEx) // ... ON_MESSAGE(WM_USER_SHELLICON, OnTrayNotification) END_MESSAGE_MAP() LRESULT CYourDialog::OnTrayNotification(WPARAM wParam, LPARAM lParam) { UINT uID; UINT uMsg; uID = (UINT)wParam; uMsg = (UINT)lParam; if (uID != IDR_MAINFRAME) return 0; if (uMsg == WM_RBUTTONUP) { CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU_TRAY)); CMenu* pSubMenu = menu.GetSubMenu(0); ASSERT(pSubMenu != NULL); // 获取鼠标位置,并转换为屏幕坐标 POINT pt; GetCursorPos(&pt); // 显示菜单 SetForegroundWindow(); pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this); PostMessage(WM_NULL, 0, 0); } else if (uMsg == WM_LBUTTONDBLCLK) { ShowWindow(SW_SHOW); // 显示对话框窗口 Shell_NotifyIcon(NIM_DELETE, &nid); // 在托盘区删除图标 } return 0; } ``` 这样,当您的MFC对话框启动时,它将会隐藏在系统托盘区中,并显示您指定的托盘图标。当用户单击托盘图标时,对话框窗口将会显示出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值