hur.cn - 华软网

 热门搜索

层窗体上使用IE,诡异了,高手都给我死进来看看

  作者:未知    来源:网络    更新时间:2011/9/29
一个窗体A上用ie控件

我在另外一个层窗体B获取A的hdc:
A.SendMessage(A.child.m_hWnd, WM_PRINT, (WPARAM)hdc, (LPARAM)PRF_CLIENT | PRF_CHILDREN | PRF_OWNED );
可以获取到,
但是当我 在A上的IE里面  滚动下IE的slider 或切换下链接

B里面获取的hdc就是空了

请高手解答:然后都活着出去。
---华软 网友回答---
帮顶。。。关注
---华软网友回复---
估计问题应该在获取A的hdc的代码那里吧,猜测……
---华软网友回复---
不切换,滚动就能获取?
---华软网友回复---
学习,顶下~
---华软网友回复---
引用 3 楼 aizeng 的回复:
不切换,滚动就能获取?



---华软网友回复---
引用 2 楼 cnfixit 的回复:
估计问题应该在获取A的hdc的代码那里吧,猜测……


应该不是哦:
因为A窗体压根就是默认的:
C++">//创建
m_winContainer.Create(m_hWnd, m_rcWebBrowser, 0, WS_POPUP);
m_winContainer.CreateControl(OLESTR("shell.Explorer.2"));
m_winContainer.QueryControl(__uuidof(IWebBrowser2), (void**)&m_iWebBrowser);
VARIANT varMyURL;
VariantInit(&varMyURL);
varMyURL.vt = VT_BSTR;
varMyURL.bstrVal = SysAllocString(OLESTR("http://www.qq.com"));
m_iWebBrowser->Navigate2(&varMyURL, 0, 0, 0, 0);
VariantClear(&varMyURL);
m_winContainer.ShowWindow(SW_SHOW);

//绘制
HWND hwndBrowser = NULL;
IServiceProvider* pServiceProvider = NULL;
if (SUCCEEDED(m_iWebBrowser->QueryInterface(IID_IServiceProvider, (void**)&pServiceProvider)))
{
IOleWindow* pWindow = NULL;
if (SUCCEEDED(pServiceProvider->QueryService(SID_SShellBrowser, IID_IOleWindow,(void**)&pWindow)))
{
if (SUCCEEDED(pWindow->GetWindow(&hwndBrowser)));
pWindow->Release();
}
pServiceProvider->Release();
}
if(hwndBrowser)
{ m_winContainer.SendMessage(hwndBrowser, WM_PRINT, (WPARAM)memhdc, (LPARAM)PRF_NONCLIENT | PRF_CLIENT | PRF_CHILDREN | PRF_CHECKVISIBLE | PRF_ERASEBKGND | PRF_OWNED );
BitBlt(m_memGDC->m_hBkDc, 0, 0, 100, 100, memhdc, 0, 0, SRCCOPY);
}

---华软网友回复---
http://topic.csdn.net/u/20110929/15/131d30c5-c151-415a-b5cb-7fe25dc65e4c.html?13690

已经曾加到200分      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。