实现窗口最大化最小化消息事件

有如下两种方法实现:
第一种:
给Dlg类添加WM_SIZE事件,会自动生成OnSize()方法

void CTrayDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialog::OnSize(nType, cx, cy);
 
	// TODO: 在此处添加消息处理程序代码
 
	//最小化 SIZE_MINIMIZED
	//最大化 SIZE_MAXIMIZED
	//还原 SIZE_RESTORED
	if   (nType== SIZE_MINIMIZED)      //响应最小化
	{   
		//在这里添加最小化需要处理的事件 
		ShowWindow(SW_HIDE);
	}
}

第二种:

直接在OnSysCommand方法添加
代码如下:

void CTrayMenuDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else if(nID == SC_MAXIMIZE)
	{
		//ShowWindow(SW_HIDE); //响应最大化
	}
	else if (nID == SC_MINIMIZE)
	{
		ShowWindow(SW_HIDE); //响应最大化
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

Comments are closed.