wells-xuxugang.blog.chinaunix.net
wells-xu
全部博文(3)
2011年(1)
2010年(1)
2009年(1)
jsj02010
Kallawa
分类: WINDOWS
2010-02-25 00:38:36
void CModeDlgHideDlg::HideMainDlg(){ GetWindowRect(&_last_dlg_pos); //移动窗口到屏幕区域之外,达到消失的目的 MoveWindow(-_last_dlg_pos.Width(), -_last_dlg_pos.Height(), _last_dlg_pos.Width(), _last_dlg_pos.Height()); // 修改对话框的风格, 使任务栏上的图标消失 ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); }void CModeDlgHideDlg::RestoreMainDlg(){ CRect rectNow; GetWindowRect(&rectNow); if (rectNow != _last_dlg_pos || !IsWindowVisible()) { MoveWindow(_last_dlg_pos); ShowWindow(SW_SHOW); //如果对话框程序有最小化窗口时的特殊处理,否则最小化时不能正确恢复窗口 if (IsIconic()) ShowWindow(SW_RESTORE); // 修改对话框的风格, 使消失的任务栏图标正常 ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW); } SendMessage(WM_SIZE); SetForegroundWindow();}
TrayMessage(NIM_ADD);this->CenterWindow();HideMainDlg();
bool CModeDlgHideDlg::TrayMessage( DWORD dwFlag, UINT uIconId){ CString strTips; strTips = _T("Just a test."); NOTIFYICONDATA notify; notify.cbSize=sizeof(NOTIFYICONDATA); notify.hWnd= m_hWnd; notify.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; notify.uCallbackMessage = WM_MY_NOTIFY_MESSAGE; //用户定义的回调消息 wcscpy_s(notify.szTip, 128, strTips); notify.uID=uIconId; HICON hIcon= AfxGetApp()->LoadIcon(uIconId); notify.hIcon=hIcon; return ::Shell_NotifyIcon(dwFlag, ¬ify)?true:false;}LRESULT CModeDlgHideDlg::WindowProc(UINT message, WPARAM wParam,LPARAM lParam){ switch(message) { case WM_MY_NOTIFY_MESSAGE://如果是用户定义的消息 if(lParam==WM_LBUTTONDBLCLK) { this->RestoreMainDlg(); } else if(lParam==WM_RBUTTONDOWN) { } break; } return CDialog::WindowProc(message, wParam, lParam);}
void CModeDlgHideDlg::OnSize(UINT nType, int cx, int cy){ CDialog::OnSize(nType, cx, cy); /*!< 为了对话框在调整大小后隐藏主窗口,可以随时恢复调整之后的大小和位置*/ CRect rectNow; GetWindowRect(&rectNow); if (rectNow != _last_dlg_pos && rectNow.left >= 0) { _last_dlg_pos = rectNow; }}void CModeDlgHideDlg::OnCancel(){ /*!< 点关闭按钮时,不真正的退出对话框,而是记住位置再隐藏 */ GetWindowRect(&_last_dlg_pos); ShowWindow(SW_HIDE);}
上一篇:没有了
下一篇:博客已升级,请注意变更地址
登录 注册