读书人

窗口最小化到托盘后还原的有关问题

发布时间: 2013-02-03 12:33:31 作者: rapoo

窗口最小化到托盘后还原的问题。
窗口最小化到托盘后,还原窗口没有显示在最上面,怎样才能让窗口显示在最上面呢?
[解决办法]

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);
}

读书人网 >VC/MFC

热点推荐