MFC最小化到托盘

版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}



猜你喜欢

转载自blog.csdn.net/guanyuqiu/article/details/79728937