隐藏窗体,隐藏标题栏,,托盘,全屏

void CHIDEDlg::OnTimer(UINT_PTR nIDEvent)//隐藏窗体
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CRect rc;
	CRect rect;
	GetWindowRect(&rect);
	rc.CopyRect(&rect);
	CPoint point;
	GetCursorPos(&point);
	if (rect.top < 0 && PtInRect(rect,point))
	{
		rect.top = 0;
		MoveWindow(rect.left,rect.top,rc.Width(),rc.Height());
	}
	else if (rect.top>-3 && rect.top < 3 && !PtInRect(rect, point))
	{
		rect.top = 3 - rect.Height();
		MoveWindow(rect.left,rect.top,rc.Width(),rc.Height());
	}
	CDialogEx::OnTimer(nIDEvent);
}


void CHIDEDlg::OnBnClickedButton1()//隐藏
{
	LONG Style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
	::SetWindowLong(this->m_hWnd, GWL_STYLE, Style&~WS_CAPTION);
	::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_FRAMECHANGED);
}
void CHIDEDlg::OnBnClickedButton2()//显示
{
	LONG Style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
	::SetWindowLong(this->m_hWnd, GWL_STYLE, Style|WS_CAPTION);
	::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED);
}

===================================最小化到托盘=============================================
添加消息
	ON_MESSAGE(WM_MINWINDOW, &CHIDEDlg::OnWM_MINSIZE)
	afx_msg LRESULT OnWM_MINSIZE(WPARAM wp, LPARAM lp);

添加定义	#define WM_MINWINDOW (WM_USER +2)
消息处理操作	
LRESULT CHIDEDlg::OnWM_MINSIZE(WPARAM wp, LPARAM lp)
{
	if (wp != IDR_MAINFRAME) return -1;
	switch (lp)
	{
	case WM_RBUTTONUP:		//显示右键菜单
	{
		CMenu popmenu;
		popmenu.LoadMenu(IDR_MENU1);//MENU制作后再对MENU里不同的选项作不同的点击回应
		CPoint point;
		GetCursorPos(&point);
		popmenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_BOTTOMALIGN, point.x, point.y, this);
		break;
	}
	case WM_LBUTTONUP:
	{
		this->ShowWindow(SW_NORMAL);
		break;

	}
	default:
		break;
	}

	return 0;
}
void CHIDEDlg::OnBnClickedButton3()//当按下最小化至托盘按钮时的操作
{
	// TODO: 在此添加控件通知处理程序代码
	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_MINWINDOW;               //自定义的消息,当在系统图标上操作时会触发此消息
	nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
	StrCpy(nid.szTip, _T("移动到图标显示的文字"));
	Shell_NotifyIcon(NIM_ADD, &nid);
	ShowWindow(SW_HIDE);
}

//=====================全屏==============================================================
	int cx, cy;
	cx = GetSystemMetrics(SM_CXSCREEN);
	cy = GetSystemMetrics(SM_CYSCREEN);
	CRect rcTemp;
	rcTemp.BottomRight() = CPoint(cx, cy);
	rcTemp.TopLeft() = CPoint(0, 0);
	MoveWindow(&rcTemp);
	LONG Style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
	::SetWindowLong(this->m_hWnd, GWL_STYLE, Style&~WS_CAPTION);
	::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED);

//========================退出全屏=============================================================
	注:clientx,clienty在初始化对话框时获取当前对话框的大小
	CRect rec;
	clientx=rec.Wideth();
	clienty=rec.Height();
	

	CRect rcTemp;
	rcTemp.BottomRight() = CPoint(clientx+20, clienty+40);
	rcTemp.TopLeft() = CPoint(0, 0);
	MoveWindow(&rcTemp);
	LONG Style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
	::SetWindowLong(this->m_hWnd, GWL_STYLE, Style | WS_CAPTION);
	::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED);








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值