偷瓜的贼 发表于 2015-5-19 14:03:30

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);
    }
}
页: [1]
查看完整版本: Win7双击任务栏图标导致窗口还原的问题