开发了一个用来在IE上显示多路视频的控件,在控件中嵌入多窗体,现在要实现控件全屏功能,但是在IE 中全屏一会之后,全屏的窗口将被压缩到左上角,无法达到真正的全屏的问题,(查了很久,就是不明白为什么会这样,在OCX容器中测试没问题)在网上有很多人也遇到类似功能,真心求教,立即结贴.
我的代码如下:
if (m_bAllFull == bFull)
{
FireOnMultiWndNotify(emFullScreen, m_bAllFull);
return;
}
if (bFull)
{
::GetWindowRect(GetSafeHwnd(), &m_rcNoneFull);
m_hParent = ::GetParent(GetSafeHwnd());
::SetParent(GetSafeHwnd(), NULL);
INT nScrWidth = GetSystemMetrics(SM_CXSCREEN);
INT nScrHeight = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(GetSafeHwnd(), HWND_TOP, 0, 0, nScrWidth, nScrHeight, SWP_SHOWWINDOW);
}
else
{
::SetWindowPos(GetSafeHwnd(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
::SetParent(GetSafeHwnd(), m_hParent);
::ScreenToClient(m_hParent, (LPPOINT)&m_rcNoneFull);
::ScreenToClient(m_hParent, ((LPPOINT)&m_rcNoneFull)+1);
::MoveWindow(GetSafeHwnd(), m_rcNoneFull.left, m_rcNoneFull.top, 
m_rcNoneFull.right-m_rcNoneFull.left, 
m_rcNoneFull.bottom-m_rcNoneFull.top,
TRUE);
}
m_bAllFull = bFull;

解决方案 »

  1.   

    就是控件本来嵌在IE里面的,全屏后控件就全窗口了,但是过一会就自动退出了全屏,并且窗口和IE分开了,分成了2个窗口,而没有回到IE里。
      

  2.   


    ::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST, 0, 0, nScrWidth, nScrHeight, SWP_SHOWWINDOW|SWP_FRAMECHANGED); 这样呢
      

  3.   

    感觉好像全屏窗口比浏览器的客户区都大了吧?试试下面的全屏代码·CRect   m_FullScreenRect; 
    CRect   WindowRect;   
    GetWindowRect(&WindowRect);   
    CRect   ClientRect;   
    int   nFullWidth  = GetSystemMetrics(SM_CXSCREEN); 
    int   nFullHeight = GetSystemMetrics(SM_CYSCREEN); RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect);   
    ClientToScreen(&ClientRect);   
    m_FullScreenRect.left   = WindowRect.left   - ClientRect.left; 
    m_FullScreenRect.top    = WindowRect.top    - ClientRect.top; 
    m_FullScreenRect.right  = WindowRect.right  - ClientRect.right + nFullWidth; 
    m_FullScreenRect.bottom = WindowRect.bottom - ClientRect.bottom + nFullHeight; 
    WINDOWPLACEMENT wndpl; 
    wndpl.length = sizeof(WINDOWPLACEMENT);   
    wndpl.flags = 0;   
    wndpl.showCmd = SW_SHOWNORMAL;   
    wndpl.rcNormalPosition = m_FullScreenRect;
    SetWindowPlacement(&wndpl);
      

  4.   

    用spy++捕捉是不是被触发了什么消息改变了窗口的大小了