MFC里NewWindow2Explorer1的一些常用处理代码
MFC里NewWindow2Explorer1的一些常用处理代码,FreeEIM部分代码。
void CADSLTryDlg::NewWindow2Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel)
{
// TODO: 在此处添加消息处理程序代码
IUnknown* pUnk =this->m_oIExplorer.GetControlUnknown();
if(pUnk)
{
IDispatch* pDisp = NULL;
HRESULT hr = pUnk->QueryInterface(IID_IDispatch, (void**)&pDisp);
if(SUCCEEDED(hr)&&pDisp)
{
*ppDisp=pDisp;
*Cancel = FALSE;
}
}
在此NewWindow2事件代码中,档一个新常口需要被创建, 我们建立一个新的当前窗体Form1的拷贝. 在此表单窗体, 相当于Internet Explorer的新实例,将处理导航.
在mfc中我们需要首先加入NewWindow2 事件的映射条目到视图类的事件映射宏. (不要忘记包含 ExDispID.h in, 那里有DISPID_NEWWINDOW2 定义.)
ON_EVENT(CMfcWebHostView, IDC_WEBBROWSER, DISPID_NEWWINDOW2,
OnNewWindow2, VTS_PDISPATCH VTS_PBOOL)
下一步声明OnNewWindow2 方法:
void OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel);
最后实现OnNewWindow2 方法以创建一个新的MfcWebHost窗口实例:
void CMfcWebHostView::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel){ // Ensure that ppDisp is not NULL. // If it is NULL, you probably specified // VT_DISPATCH for the first parameter in // the ON_EVENT macro for NewWindow2 in // the event sink map. The correct parameter // type is VT_PDISPATCH. // ASSERT(ppDisp); if (!ppDisp) return; // Get a pointer to the application object // for this application. // CWinApp* pApp = AfxGetApp(); // Get the correct document template. // CDocTemplate* pDocTemplate; POSITION pos = pApp->GetFirstDocTemplatePosition(); pDocTemplate = pApp->GetNextDocTemplate(pos); ASSERT(pDocTemplate); // Create the new frame. CFrameWnd* pNewFrame = pDocTemplate->CreateNewFrame(GetDocument(), (CFrameWnd*)AfxGetMainWnd()); ASSERT(pNewFrame); // Activate the frame, and set its active view. // pDocTemplate->InitialUpdateFrame(pNewFrame, NULL); CMfcWebHostView* pWbView = (CMfcWebHostView*)pNewFrame->GetActiveView(); ASSERT(pWbView); *ppDisp = pWbView->m_webBrowser.GetApplication();}
如果你在sid或者mdi应用程序中控制一个WebBrowser控件,实现OnNewWindow2 方法是复杂的且需要知道如何解决同文档模版如何工作. 或许, 如果你在一个给予对话框的应用程序控制一个WebBrowser控件是较为容易的.此处为示例:
void CMyDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel) { m_dlgNewWB = new CMyDlg; m_dlgNewWB->Create(IDD_MYDLG_DIALOG); *ppDisp = m_dlgNewWB->m_webBrowser.GetApplication();}
记住当你完成打开的新对话框后删除(delete) m_dlgNewWB. 且不要在CMyDlg::OnInitDialog方法中导航, 因为这样代码将不会工作.
MFC里NewWindow2Explorer1的一些常用处理代码相关推荐
- SAP MM 不常用事务代码MIDO
SAP MM 不常用事务代码MIDO SAP MM模块盘点流程里有一个不常用的事务代码MIDO (Physical Inventory Overview).在项目实践中,笔者之前基本没有去关注过这个事 ...
- SAP MM 初阶之不常用事务代码MEBV
SAP MM 初阶之不常用事务代码MEBV 今天从一个同行那里听到事务代码MEBV(extend agreement),可以用于在年底的时候顺延或者说扩展合同的.这个事务代码笔者从未用过,也没有听说过 ...
- SAP MM 不常用事务代码之MBSL - Copy Material Document
SAP MM 不常用事务代码之MBSL - Copy Material Document 闲来无事的时候,笔者喜欢在SAP系统里捣鼓捣鼓.SAP设计的那些不常用/没关注过的事务代码,字段等,总能引起笔 ...
- android 常用混淆,Android常用的代码混淆整理【原创】
android里的代码混淆是比不可少的东西,下面就贴一些常用的代码混淆. #指定代码的压缩级别 -optimizationpasses 5 #包明不混合大小写 -dontusemixedcasecla ...
- css宋体代码_前端开发必备的CSS命名规范与常用CSS代码集合
编辑 | web前端开发 来源 | web前端开发 我们在用html+css进行网页的排版布局时,经常会遇到CSS命名,如果是在团队多人协作开发时,团队里都会有自己的命名规范与要求. 但如果是自己在个 ...
- html表格字体格式转换,【转】常用HTML代码速查表
在搏客中比较常用的代码 一.美化文字的代码: 1.文字间换行:文字内容 文字内容 2.一个段落: 文字内容 3.字体加粗:文字内容 4.字体加大:文字内容 5.文字标题: 从一号标题H1到六号标题H6 ...
- Wordpress模板主题中functions.php常用功能代码与常用插件[ 后台篇](持续收集整理)
用Wordpress建站的初学者一定会需要用到的Wordpress模板主题中functions.php常用功能代码与常用插件.慢慢持续收集整理....... 目录 一.Wordpress模板主题中fu ...
- WEB编程开发常用的代码[转]
转自:http://blog.csdn.net/goaler/archive/2005/01/13/251090.aspx 1. ASP与Access数据库连接: dim conn,mdbfile ...
- 建网站常用HTML代码
建网站常用HTML代码 如果你想使用某种颜色,取得它的颜色值即可.比如,您想改变某些文字的颜色,您可以使用下面的代码: <font color=#ffc060 size=3 face=" ...
最新文章
- 105、Replicated Mode VS Global Mode (Swarm12)
- 3306 端口 要不要修改_zabbix 自动发现并监控所有端口
- Org设置让DataLoader导入数据时能导入创建日期
- access mysql 同步_使ACCESS数据库保持同步
- SSM整合时配置文件的编写
- 作者招募 | 加入PaperWeekly,让你的文字被更多人看到
- arm 架构_ARM发布A78增强版大核架构:性能怪兽
- CodeSmith 5.0工具实例篇系列4——根据表生成修改的存储过程,针对MS Sqlserver
- java json重命名,eclipse中java变量怎么变成json格式的编码?
- 详解Python线程对象daemon属性对线程退出的影响
- 青岛农行开始推广数字人民币钱包
- AJAX在VS2005下的基本使用第一篇
- CAS配置数据库进行用户验证
- 可以嵌入ppt的课堂点名器_宏大智慧课堂支招:孩子和学霸的差距,就在课上课下55分钟里...
- 域名抢注代码_如何停止域名抢注攻击
- 【lua语言从青铜到王者】第二篇:开发环境搭建+3种编辑器使用示例
- 操作系统镜像资源下载
- 网吧无盘系统服务器安装,网吧网络无盘系统的安装方法
- 这家为AI for Science而生的新研究院,要让科研进入“安卓模式”
- 杰里AC695N开发详解汇总(持续更新中)