窗口最小化到托盘后还原的问题。
窗口最小化到托盘后,还原窗口没有显示在最上面,怎样才能让窗口显示在最上面呢?
[解决办法]
bool SetWindowTop(CWnd* pWnd)
{
if(!pWnd)
{
?? return false;
}
if(pWnd->GetExStyle()&WS_EX_TOPMOST)
{
?? return true;
}
else
{
?? int i= pWnd->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE
[解决办法]
SWP_NOSIZE);
?? if (i==0)
??? return false;
?? else
??? return true;
}
}
//取消窗口置顶
bool CancelWindowTop(CWnd* pWnd)
{
if(pWnd)
{
?? int x=pWnd->SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_NOMOVE
[解决办法]
SWP_NOSIZE);
?? if(x==0)
??? return false;
?? else
??? return true;
}
else
{
?? return false;
}
}
[解决办法]
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,cxScreen,cyScreen,SWP_SHOWWINDOW
[解决办法]
SWP_NOZORDER);
置顶显示
[解决办法]
LRESULT CxxxDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
if (lParam == WM_LBUTTONDOWN)
{
if (IsWindowVisible())
{
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
else
{
ShowWindow(SW_SHOWNA);
Sleep(3); //不Sleep的话,有时还原时看不到动画效果
ShowWindow(SW_RESTORE);
}
}
return 0;
}
void CxxxDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
CDialog::OnSysCommand(nID, lParam);
if (nID == SC_MINIMIZE)
ShowWindow(SW_HIDE);
}