VC 最小化到托盘程序的编写 在实际操作电脑的过程中,我们常常可以看到一些应用程序可以最小化到桌面右下角的托盘中显示,如一些杀毒软件等开机就显示在托盘中,或是我们常用的QQ 等聊天工具,都可以最小化在托盘中,如图。 图 应用程序的托盘显示 在图-1 中,可以看到第一个服务器样式的图标,那个就是我编写的服务器程序最小化在托盘中的显示。其实很简单,只要在程序中加几行代码就可以了。我主要就MFC 中基于Dialog 对话框的程序作一下简单的介绍。以下是基本步骤: 1、首先建立一个基于对话框的MFC 程序; 2、在资源中的Icon 中导入一个自己喜欢的图标,ID 命名为IDR_MAINFRAME,将先前的IDR_MAINFRAME 的图标删除掉; 3、在自己的Dialog 头文件中定义一个变量 NOTIFYICONDATA m_nid,关于该结构体的具体信息可以查阅 MSDN; 4、添加消息响应函数 OnInitDialog(),并在该函数中添加以下代码,这样程序一启动,就在托盘中显示出了自己应用程序的图标。 //---------------------------托盘显示---------------------------------// m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); m_nid.hWnd = this->m_hWnd; m_nid.uID = IDR_MAINFRAME; m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP ; m_nid.uCallbackMessage = WM_SHOWTASK; // 自定义的消息名称 m_nid.hIcon = LoadIcon (AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); strcpy(m_nid.szTip, "服务器程序"); // 信息提示条"服务器程序" Shell_NotifyIcon(NIM_ADD, &m_nid); // 在托盘区添加图标 这时候编译,会报 WM_SHOWTASK 的错,因为该消息要自己定义。 5、在 Dialog 头文件中定义自定义的消息和声明消息函数原型 #define WM_SHOWTASK WM_USER+1 在头文件的//{{AFX_MSG 和//}}AFX_MSG 之间声明消息响应函数: afx_msg LRESULT OnShowTask(WPARAM wParam, LPARAM lParam); 6、然后在CPP 文件中添加消息映射。在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP 之间加入: ON_MESSAGE(WM_SHOWTASK,OnShowTask) 7、在Dialog 源文件中添加自定义的消息响应代码,左键双击弹出应用程序主窗口,右键单击弹出菜单。 LRESULT CServerDlg::OnShowTask(WPARAM wParam, LPARAM lParam) { if(wParam != IDR_MAINFRAME) return 1; switch(lParam) { case WM_RBUTTONUP: // 右键起来时弹出菜...