就是dlg上有一个CStatic 双击CStatic后想全屏 然后在双击返回原状态 可是全屏之后在双击无反应 不清楚什么原因代码是这样的 :
if( m_IsScreen )
{ int cx=GetSystemMetrics(SM_CXSCREEN);
int cy=GetSystemMetrics(SM_CYSCREEN);

//保存位置信息 
m_VideoStatic.GetWindowPlacement(&m_OldPlacement);
m_VideoStatic.SetParent(NULL); // GetDesktopWindow();

//修改风格
m_VideoStatic.SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | WS_EX_TOPMOST); 
m_VideoStatic.ModifyStyle(WS_CHILD, 0);
//m_VideoStatic.ModifyStyle(0,WS_CHILD);
//移动窗口
m_VideoStatic.MoveWindow(0, 0, cx, cy);
player->SetDisplayRange(0,0,cx,cy);
m_IsScreen = FALSE;

m_VideoStatic.SetFocus();
}
else
{
m_VideoStatic.SetParent(this);
m_VideoStatic.SetWindowPlacement(&m_OldPlacement);
m_IsScreen = TRUE; this->SetFocus();
}

解决方案 »

  1.   

    在MoveWindow改变窗口大小到全屏之前保存之前的窗口RECT
      

  2.   

    全屏用 ShowWindow(SW_SHOWMAXIMIZED)比较好,还原用SW_RESTORE参数,其它还有:
    #define SW_HIDE             0
    #define SW_SHOWNORMAL       1
    #define SW_NORMAL           1
    #define SW_SHOWMINIMIZED    2
    #define SW_SHOWMAXIMIZED    3
    #define SW_MAXIMIZE         3
    #define SW_SHOWNOACTIVATE   4
    #define SW_SHOW             5
    #define SW_MINIMIZE         6
    #define SW_SHOWMINNOACTIVE  7
    #define SW_SHOWNA           8
    #define SW_RESTORE          9
    #define SW_SHOWDEFAULT      10
    #define SW_FORCEMINIMIZE    11
    #define SW_MAX              11