版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guanyuqiu/article/details/79728937
1.右键对话框/属性/Miniminze Box置为true
2.Cutton_DlgDlg.h : 头文件
#define WM_SHOWTASK (WM_USER+1)
类中定义函数
LRESULT OnShowTask(WPARAM wParam, LPARAM lParam);
int ToPallets();
void DeletePallets();
3.Cutton_DlgDlg.cpp : 实现文件
映射
BEGIN_MESSAGE_MAP(CCutton_DlgDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_SHOWTASK,OnShowTask)
END_MESSAGE_MAP()
OnSysCommand(UINT nID,LPARAM lParam) 中
void CCutton_DlgDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
if (nID == SC_MINIMIZE)
{
ToPallets();
}
}
LRESULT CCutton_DlgDlg::OnShowTask(WPARAM wParam, LPARAM lParam)
{
if (IDR_MAINFRAME != wParam)
{
return 1;
}
switch (lParam)
{
case WM_RBUTTONUP: //右键起来时弹出快捷菜单,这里只有一个“关闭”
{
LPPOINT lpoint = new tagPOINT;
::GetCursorPos(lpoint);
CMenu menu;
menu.CreatePopupMenu(); //声明一个弹出式菜单
//增加菜单项“关闭”,点击则发送消息wm_destroy给主窗口将程序结束
menu.AppendMenu(MF_STRING, WM_DESTROY, "关闭"); //确定弹出式菜单的位置
menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y, this);
HMENU hmenu = menu.Detach();
menu.DestroyMenu();
delete lpoint;
}break;
case WM_LBUTTONDBLCLK: //双击左键的处理
{
this->ShowWindow(SW_SHOW); //显示主窗口
DeletePallets();
}break;
default:
break;
}
return 0;
}
int CCutton_DlgDlg::ToPallets()
{
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, "Crop Recognize");
Shell_NotifyIcon(NIM_ADD, &nid); //在托盘区添加图标
ShowWindow(SW_HIDE);
return 1;
}
void CCutton_DlgDlg::DeletePallets()
{
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, "Crop Recognize");
Shell_NotifyIcon(NIM_DELETE, &nid);
}