http://www.maben.com.cn/archives/208.html
VC++2010 制作单文档托盘程序
今天写程序用到了托盘程序,在网上找了一些资料,由于系统是单文档的,网上大多数说的是基于对话框的,单文档的托盘程序资料很少,所以自己写了贴出来了。其中参考了不少资料,如有若侵犯版权,请与我联系,我会在第一时间处理。
本系统用的环境是VS2010,首先建立一个单文档的项目。
在MainFrm.h最上方插入
1 | #define MYWM_NOTIFYICON WM_USER+1 |
在类里面的public里面加入:
1 | NOTIFYICONDATA m_tnid; |
2 | LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam); |
以上全是在MainFrm.h里面添加的。
再进入MainFrm.cpp
在CMainFrame::OnCreate函数中的return 0之前添加以下代码:
01 | m_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的最下方加入函数
01 | LRESULT 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 | } |
这样编译,组建,运行就可以看到效果了..
本文标题:
VC++2010 制作单文档托盘程序
本文链接:
http://www.maben.com.cn/archives/208.html转载请注明出处
本文介绍如何使用VC++2010创建单文档托盘程序,包括设置托盘图标、提示信息及响应鼠标操作等步骤。
3220

被折叠的 条评论
为什么被折叠?



