部分源码:
// MainFrm.h : interface of the CMainFrame class
//

/**//////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_MAINFRM_H__E8C66A23_6409_46C4_859D_C7E0B79A0446__INCLUDED_)
#define AFX_MAINFRM_H__E8C66A23_6409_46C4_859D_C7E0B79A0446__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "ChildView.h"

class CMainFrame : public CFrameWnd

...{
public:
CMainFrame();
protected:
DECLARE_DYNAMIC(CMainFrame)

// Attributes
public:

// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMainFrame)
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
//}}AFX_VIRTUAL

// Implementation
public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
CChildView m_wndView;

// Generated message map functions
protected:
void ToTray();
void DeleteTray();
//{{AFX_MSG(CMainFrame)
afx_msg void OnSetFocus(CWnd *pOldWnd);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnWindowshow();
//}}AFX_MSG
afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
};


/**//////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MAINFRM_H__E8C66A23_6409_46C4_859D_C7E0B79A0446__INCLUDED_)

// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "test.h"

#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/**//////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_SETFOCUS()
ON_WM_CREATE()
ON_WM_SYSCOMMAND()
ON_COMMAND(ID_WINDOWSHOW, OnWindowshow)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_SHOWTASK,OnShowTask)
END_MESSAGE_MAP()


/**//////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()

...{
// TODO: add member initialization code here
}

CMainFrame::~CMainFrame()

...{
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

...{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(0);
return TRUE;
}


/**//////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const

...{
CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const

...{
CFrameWnd::Dump(dc);
}

#endif //_DEBUG


/**//////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnSetFocus(CWnd* pOldWnd)

...{
// forward focus to the view window
m_wndView.SetFocus();
}

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)

...{
// let the view have first crack at the command
if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
return TRUE;

// otherwise, do default handling
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

...{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if(!m_wndView.Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,
CRect(0,0,0,0),this,AFX_IDW_PANE_FIRST,NULL))
return -1;
return 0;
}

void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)

...{

if(nID==SC_MINIMIZE) ...{
ToTray();
return;
}
CFrameWnd::OnSysCommand(nID, lParam);
}

void CMainFrame::ToTray()

...{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"神的华丽"); //信息提示条
Shell_NotifyIcon(NIM_ADD,&nid); //在托盘区添加图标
ShowWindow(SW_HIDE); //隐藏主窗口
}

LRESULT CMainFrame::OnShowTask(WPARAM wParam,LPARAM lParam)

...{
if(wParam!=IDR_MAINFRAME)
return 1;
CMenu menu;
switch(lParam)

...{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”

...{
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//得到鼠标位置
menu.LoadMenu(IDR_TUOPAN);
SetForegroundWindow();//使当前窗口成为主窗口,从而是在别的地方单击使菜单消失
CMenu *pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);



/**//*menu.CreatePopupMenu();//声明一个弹出式菜单
//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已隐藏),将程序结束。
menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭");
//确定弹出式菜单的位置
menu.TrackPopupMenu(TPM_RIGHTALIGN,lpoint->x,lpoint->y,this);
//资源回收 */
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
}
break;
case WM_LBUTTONDBLCLK://双击左键的处理

...{
this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿
DeleteTray();
}
break;
default:
break;
}
return 0;
}

void CMainFrame::DeleteTray()

...{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"神的华丽"); //信息提示条为“计划任务提醒”
Shell_NotifyIcon(NIM_DELETE,&nid); //在托盘区删除图标
}

void CMainFrame::OnWindowshow()

...{
this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿
DeleteTray();
}

功能,单击程序的最小化,是程序最小化到系统托盘,单击右击出现菜单,点击显示,显示窗口,单击除图标的任意位置,菜单消失!