您的位置:首页 > 其它

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

2016-08-07 21:43 295 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: