ocx在IE中全屏的问题,坐等结贴.
开发了一个用来在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;
[解决办法]
全屏的窗口将被压缩到左上角?
什么意思
[解决办法]
::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST, 0, 0, nScrWidth, nScrHeight, SWP_SHOWWINDOW|SWP_FRAMECHANGED);
这样呢
[解决办法]
感觉好像全屏窗口比浏览器的客户区都大了吧?试试下面的全屏代码·
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);
[解决办法]
还有就是是不是你在其它地方触发修改了那个窗口了
[解决办法]
用spy++捕捉是不是被触发了什么消息改变了窗口的大小了