Win7双击任务栏图标导致窗口还原的问题

技术调查:

Win7双击任务栏中高Cpu负荷运行的进程的图标,导致激活此进程的窗体还原事件SC_RESTORE。

 

解决方案:

我的需求要求主界面始终最大化显示,在主框架接收到SC_RESTORE消息时ShowWindow(SW_MAXIMIZE)

void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
    
// win7 禁止窗体框架非客户区鼠标拖动
    switch (nID)
    {
    
case SC_RESTORE:
    
//    CFrameWnd::OnSysCommand(SC_MAXIMIZE, lParam);
        ShowWindow(SW_MAXIMIZE);
        
break;
    
case SC_MOVE:
    
case 0xF012:
        
return;
    
default:
        CFrameWnd::OnSysCommand(nID, lParam);
    }
}

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
    
//if (SIZE_RESTORED == nType)
    
//{
    
//    ShowWindow(SW_MAXIMIZE);
    
//    //this->MoveWindow(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
    
//    //return;
    
//    //CFrameWnd::OnSize(SIZE_MAXIMIZED, cx, cy);
    
//}
    
//else
        CFrameWnd::OnSize(nType, cx, cy);    

    
// 解决浮动窗口移动中,主框架最小化导致的浮动窗口定位错误。
    CView* pView = GetActiveView();
    
if (pView && SIZE_MAXIMIZED == nType)
    {
        
//RecalcLayout();
        ::SendMessageA(pView->m_hWnd, WM_SIZE, cx, cy);
    }
}
posted @ 2011-08-03 15:02  DancingFish  阅读(892)  评论(0编辑  收藏  举报