怎么把ie窗口放进自己的主窗口里,并且再打开的窗口还在自己的主窗口里打开

lother 2016-03-11 08:11:31
如题, 不想用其它的插件或者browser控件
...全文
161 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-03-11
  • 打赏
  • 举报
回复
引用 3 楼 paschen 的回复:
将其他窗口嵌入到自己程序参考代码:

HWND hwnd = ::FindWindow(_T("NotePad"), _T("无标题 - 记事本")); //同理其他窗口
if (hwnd)
{
	LONG style = ::GetWindowLong(hwnd, GWL_STYLE);
	style &= ~WS_CAPTION;
	style &= ~WS_CLIPSIBLINGS;
	style |= WS_CHILD;
	::SetWindowLong(hwnd, GWL_STYLE, style);
	CRect rc;
	GetClientRect(rc);
	//rc.bottom -= 60;
	//ClientToScreen(&rc);
	::SetParent(hwnd, m_hWnd);
	::SetWindowPos(hwnd, HWND_TOP, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW | SWP_FRAMECHANGED);
	//::BringWindowToTop(hwnd);
}
高,实在是高!
paschen 版主 2016-03-11
  • 打赏
  • 举报
回复
将其他窗口嵌入到自己程序参考代码:

HWND hwnd = ::FindWindow(_T("NotePad"), _T("无标题 - 记事本")); //同理其他窗口
if (hwnd)
{
	LONG style = ::GetWindowLong(hwnd, GWL_STYLE);
	style &= ~WS_CAPTION;
	style &= ~WS_CLIPSIBLINGS;
	style |= WS_CHILD;
	::SetWindowLong(hwnd, GWL_STYLE, style);
	CRect rc;
	GetClientRect(rc);
	//rc.bottom -= 60;
	//ClientToScreen(&rc);
	::SetParent(hwnd, m_hWnd);
	::SetWindowPos(hwnd, HWND_TOP, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW | SWP_FRAMECHANGED);
	//::BringWindowToTop(hwnd);
}
cocoabird 2016-03-11
  • 打赏
  • 举报
回复
引用 1 楼 jiangsheng 的回复:
IE有提供ActiveX的。很多类库都有IE的封装类,比如MFC的CHTMLView,wxWidgets的webview_ie之类。自己用C写一个ActiveX容器放这个控件也可以,codeproject上有示例http://www.codeproject.com/Articles/3365/Embed-an-HTML-control-in-your-own-window-using-pla。
蒋晟 2016-03-11
  • 打赏
  • 举报
回复
IE有提供ActiveX的。很多类库都有IE的封装类,比如MFC的CHTMLView,wxWidgets的webview_ie之类。自己用C写一个ActiveX容器放这个控件也可以,codeproject上有示例http://www.codeproject.com/Articles/3365/Embed-an-HTML-control-in-your-own-window-using-pla。
jaty 2016-03-11
  • 打赏
  • 举报
回复
也看过不少相关文章,,纯SDK重写WEB控件之类的..过程太过复杂,,这是菜鸟取巧做法,,见笑了!!
jaty 2016-03-11
  • 打赏
  • 举报
回复
如何处理要看个人技术了,,如果是高手就当我没说,,个人建议用CHtmlView类,,或者从这个类派生出新类,,要在本程序弹出新的网页,,可以在NEWWINDOW3事件中进行处理,,这个事件参数中有一个将要打开网页的链接,,把这链接重新导航一次,,还有另一个参数要设置为TRUE,,意思就是不弹出新的窗口 void CDlgDownLoad::NewWindow3Webmain(LPDISPATCH* ppDisp, BOOL* Cancel, unsigned long dwFlags, LPCTSTR bstrUrlContext, LPCTSTR bstrUrl) { // TODO: 在此处添加消息处理程序代码 *Cancel = TRUE; m_webmain.Navigate(bstrUrl, NULL, NULL, NULL, NULL); SetDlgItemText(IDC_EDIT_URLMAIN, bstrUrl); }
paschen 版主 2016-03-11
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
[quote=引用 3 楼 paschen 的回复:] 将其他窗口嵌入到自己程序参考代码:

HWND hwnd = ::FindWindow(_T("NotePad"), _T("无标题 - 记事本")); //同理其他窗口
if (hwnd)
{
	LONG style = ::GetWindowLong(hwnd, GWL_STYLE);
	style &= ~WS_CAPTION;
	style &= ~WS_CLIPSIBLINGS;
	style |= WS_CHILD;
	::SetWindowLong(hwnd, GWL_STYLE, style);
	CRect rc;
	GetClientRect(rc);
	//rc.bottom -= 60;
	//ClientToScreen(&rc);
	::SetParent(hwnd, m_hWnd);
	::SetWindowPos(hwnd, HWND_TOP, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW | SWP_FRAMECHANGED);
	//::BringWindowToTop(hwnd);
}
高,实在是高![/quote] 之前在MFC版块别人问过类似问题学习的

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧