VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 475|回复: 0

VC++打造局域网聊天室-[10]任务栏托盘功能的实现

[复制链接]
01_avatar_middle
online_admins admin 发表于 2017-12-25 23:33:41 | 显示全部楼层 |阅读模式
1、封装 “其他功能” 按钮响应函数:
void CChatRoomDlg::OnBnClickedOther()
{
        CPoint pt;
        CRect mRect;
        CMenu mMenu, *pMenu = NULL;
        GetDlgItem(IDC_OTHER)->GetWindowRect(&mRect);
        pt = mRect.BottomRight();
        pt.y = mRect.top+10;
        mMenu.LoadMenu(IDR_MENU1);
        pMenu = mMenu.GetSubMenu(0);
        pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);
}

2、任务栏托盘函数的封装:
BOOL CChatRoomDlg::TrayMyIcon(BOOL bAdd)
{
        BOOL bRet = FALSE;
        NOTIFYICONDATA tnd;
        tnd.cbSize = sizeof(NOTIFYICONDATA);
        tnd.hWnd = m_hWnd;
        tnd.uID = IDR_MAINFRAME;
        if ( bAdd == TRUE ) {
                tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
                tnd.uCallbackMessage = WM_TRAYICON_MSG;
                tnd.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
                _tcscpy_s(tnd.szTip, sizeof(tnd.szTip), _T("聊天室v1.0"));
                ShowWindow(SW_MINIMIZE);
                ShowWindow(SW_HIDE);
                bRet = Shell_NotifyIcon(NIM_ADD, &tnd);
        }else{
                ShowWindow(SW_SHOWNA);
                SetForegroundWindow();
                bRet = Shell_NotifyIcon(NIM_DELETE, &tnd);
        }
        return bRet;
}

3、消息响应函数的添加:
#define WM_TRAYICON_MSG (WM_USER+100)
ON_MESSAGE(WM_TRAYICON_MSG, OnTrayCallBackMsg)

LRESULT CChatRoomDlg::OnTrayCallBackMsg(WPARAM wparam, LPARAM lparam)
{
        switch(lparam)
        {
        case WM_RBUTTONUP:
                {
                        CMenu mMenu, *pMenu = NULL;
                        CPoint pt;
                        mMenu.LoadMenu(IDR_MENU2);
                        pMenu = mMenu.GetSubMenu(0);
                        GetCursorPos(&pt);
                        SetForegroundWindow();
                        pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);
                        break;
                }
        case WM_LBUTTONDBLCLK:
                ShowWindow(SW_RESTORE);
                SetForegroundWindow();
                break;
        default:break;
        }
        return NULL;
}

备注:本节课是《Vc++打造局域网聊天室》系列课程的最后一课,所有的功能也都给大家实现并讲解了,不知道大家学的怎么样!还是希望大家多实践,多写代码,以此来提高能力。

本程序代码已打包给大家,大家可以参考!

由于本作者能力有限,在《Vc++打造局域网聊天室》系列课程中如有错误信息,请指正!


本套教程由VC驿站原创,完全免费!
相关课程演示细节还请观看视频教程!
教程下载地址:http://www.cctry.com/thread-6-1-1.html





上一篇:VC++打造局域网聊天室-[9]程序关闭及线程的结束

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-21 21:32

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表