VC++2010 制作单文档托盘程序

本文介绍如何使用VC++2010创建单文档托盘程序,包括设置托盘图标、提示信息及响应鼠标操作等步骤。

http://www.maben.com.cn/archives/208.html

VC++2010 制作单文档托盘程序

 

今天写程序用到了托盘程序,在网上找了一些资料,由于系统是单文档的,网上大多数说的是基于对话框的,单文档的托盘程序资料很少,所以自己写了贴出来了。其中参考了不少资料,如有若侵犯版权,请与我联系,我会在第一时间处理。
本系统用的环境是VS2010,首先建立一个单文档的项目。
在MainFrm.h最上方插入

1#define MYWM_NOTIFYICON WM_USER+1

在类里面的public里面加入:

1NOTIFYICONDATA m_tnid;
2LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);

以上全是在MainFrm.h里面添加的。
再进入MainFrm.cpp
在CMainFrame::OnCreate函数中的return 0之前添加以下代码:

01m_tnid.cbSize=sizeof(NOTIFYICONDATA);
02    m_tnid.hWnd=this->m_hWnd;
03    m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
04    m_tnid.uCallbackMessage=MYWM_NOTIFYICON;
05
06    CString szToolTip;
07    szToolTip=_T("仓储信息业务管理系统");
08    _tcscpy(m_tnid.szTip, szToolTip);
09    m_tnid.uID=IDR_MAINFRAME;
10    HICON hIcon;
11    hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
12    m_tnid.hIcon=hIcon;
13    ::Shell_NotifyIcon(NIM_ADD,&m_tnid);
14    if(hIcon)
15        ::DestroyIcon(hIcon);

在MainFrm.cpp的最下方加入函数

01LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
02{
03    // TODO: Add your specialized code here and/or call the base class
04    switch(message)
05    {
06
07    case MYWM_NOTIFYICON:       
08        //如果是用户定义的消息
09        if(lParam==WM_LBUTTONDBLCLK)
10        //鼠标双击时主窗口出现
11            AfxGetApp()->m_pMainWnd->
12                ShowWindow(SW_SHOW);
13        }
14        else if(lParam==WM_RBUTTONDOWN){ 
15            //鼠标右键单击弹出菜单
16            CMenu menu;
17
18            menu.LoadMenu(IDR_MAINFRAME);  //这里加载的是菜单,在这里测试的是用系统自带的菜单,可以在资源里面自己添加自定义的菜单 
19            //载入事先定义的菜单
20            CMenu* pMenu=menu.GetSubMenu(0);
21            CPoint pos;
22            GetCursorPos(&pos);
23            pMenu->TrackPopupMenu
24                (TPM_LEFTALIGN|TPM_RIGHTBUTTON,
25                pos.x,pos.y,AfxGetMainWnd());
26        }
27        break;
28    case WM_SYSCOMMAND:     
29        //如果是系统消息
30        if( wParam==SC_CLOSE )
31       
32            //接收到最小化消息时主窗口隐藏
33            AfxGetApp()->m_pMainWnd->
34                ShowWindow(SW_HIDE);
35            return 0;
36        }
37        break;
38    }    
39    return CFrameWnd::DefWindowProc(message, wParam, lParam);
40}

这样编译,组建,运行就可以看到效果了..

本文链接: http://www.maben.com.cn/archives/208.html转载请注明出处

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值