首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

ocx在IE中全屏的有关问题,坐等结贴

2012-05-01 
ocx在IE中全屏的问题,坐等结贴.开发了一个用来在IE上显示多路视频的控件,在控件中嵌入多窗体,现在要实现控

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);

这样呢

[解决办法]
感觉好像全屏窗口比浏览器的客户区都大了吧?试试下面的全屏代码·

C/C++ code
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++捕捉是不是被触发了什么消息改变了窗口的大小了

热点排行