基于MFC的JavaScript进行网页数据交互
目录
前言
一、创建html对话框工程
二、使用步骤
1.引入JavaScript接口代码
2.重写相关接口
3.在html网页中添加C/C++调用的接口
4.在MFC工程中添加调用接口
5.设置确认按键触发调用
6.运行结果
总结
前言
如何快速的进行MFC开发,这里我介绍一种JavaScript与C/C++交互的方式。
一、创建html对话框工程
我这里是基于VS2010的开发环境搭建的,以下的操作均在VS2010中。




二、使用步骤
1.引入JavaScript接口代码

LPDISPATCH m_pDisp; //判断网页加载
CCallScript pCallScript; //脚本调用
2.重写相关接口
代码如下(示例):
void CMFCHtmlDlg::OnSize(UINT nType, int cx, int cy)
{CDHtmlDialog::OnSize(nType, cx, cy);// TODO: 在此处添加消息处理程序代码if (m_pBrowserApp != NULL){m_pBrowserApp->put_Top(0);m_pBrowserApp->put_Left(0);m_pBrowserApp->put_Height(cy);m_pBrowserApp->put_Width(cx/* - 50*/);}
}void CMFCHtmlDlg::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{CDHtmlDialog::OnNavigateComplete(pDisp, szUrl);// TODO: 在此添加专用代码和/或调用基类if (!m_pDisp)m_pDisp = pDisp;
}void CMFCHtmlDlg::OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{CDHtmlDialog::OnDocumentComplete(pDisp, szUrl);// TODO: 在此添加专用代码和/或调用基类if (m_pDisp && (m_pDisp == pDisp))//判断网页是否真正加载完毕{IHTMLDocument2* pDoc;HRESULT hr = GetDHtmlDocument(&pDoc);pCallScript.SetDocument(pDoc);pDoc->Release();m_pDisp = NULL;//Reset glpDisp}
}BOOL CMFCHtmlDlg::CanAccessExternal()
{return TRUE;
}
3.在html网页中添加C/C++调用的接口

4.在MFC工程中添加调用接口
BEGIN_DISPATCH_MAP(CMFCHtmlDlg, CDHtmlDialog)DISP_FUNCTION(CMFCHtmlDlg, "HtmlShowJson", CallCplusplus, VT_EMPTY, VTS_UI2)
END_DISPATCH_MAP()
HRESULT CMFCHtmlDlg::CallCplusplus() {CSimpleArray<CComBSTR> paramArray;CString msg;CComVariant r;msg.Format("hello,from C/C++");paramArray.Add(msg.GetBuffer());pCallScript.Run("HtmlShowJson", paramArray, &r);if (r.vt == VT_BSTR){CString strValue;r.ChangeType(VT_BSTR);_variant_t var_t;_bstr_t bstr_t;var_t = r;bstr_t = var_t;strValue.Format("%s", (const char*)bstr_t);if (AfxMessageBox(strValue, MB_YESNO) == IDYES) {}}else {CString strMsg = "HtmlShowJson Error!";if (AfxMessageBox(strMsg, MB_YESNO) == IDYES) {}};return S_OK;
}
5.设置确认按键触发调用
HRESULT CMFCHtmlDlg::OnButtonOK(IHTMLElement* /*pElement*/)
{CallCplusplus();return S_OK;
}
6.运行结果


总结
以上就是今天要讲的内容,本文仅仅简单介绍了在MFC中基于JavaScript的使用,而html提供了大量能使我们快速便捷地处理界面的优美布局。
相关文章:
基于MFC的JavaScript进行网页数据交互
目录 前言 一、创建html对话框工程 二、使用步骤 1.引入JavaScript接口代码 2.重写相关接口 3.在html网页中添加C/C调用的接口 4.在MFC工程中添加调用接口 5.设置确认按键触发调用 6.运行结果 总结 前言 如何快速的进行MFC开发,这里我介绍一种JavaScript与C/C交互的…...
AUTOSAR-Fee
Fee模块 全称Flash EEPROM Emulation Module,属于ECU抽象层 Fee模块本身是脱离硬件的,但是Fee模块可能会引用的Fls模块定制API,所以只能算半抽象. FEE模块应从设备特定的寻址方案和分段中抽象出来,并为上层提供虚拟寻址方案和分段(virtual addressing scheme and segment…...
Linux基本命令——操作演示
Linux基本命令——操作演示Linux的目录结构Linux命令入门目录切换相关命令(cd/pwd)相对路径、绝对路径和特殊路径符创建目录命令(mkdir)文件操作命令part1 (touch、cat、more)文件操作命令part2 (cp、mv、rm)查找命令 …...
【Linux】目录和文件的权限
Linux中的权限有什么作用Linux权限管理文件访问者的分类文件类型和访问权限(事物属性)**文件权限值的表示方法**文件访问权限的相关设置方法chmodchownchgrpumaskumask使用 sudo分配权限目录的权限Linux中的权限有什么作用 Linux下有两种用户࿱…...
Unity 优化之Player Setting
Quality SettingPixel Light Count 使用前向渲染时最大像素光源数。也是性能关键。数量越大消耗越多。Texture Quality:贴图质量,可以选择Half Res,这样速度会更快,但是贴图质量会轻微下降。Anisotropic Textures 纹理各向异形Ant…...
Qt——通过一个简单的程序例程熟悉使用Qt Creator软件进行项目搭建的基本流程(新建项目、项目的文件组成、修改ui文件、编译运行与调试)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》...
Linux 如何使用 git | 新建仓库 | git 三板斧
文章目录 专栏导读 一、如何安装 git 二、注册码云账号 三、新建仓库 配置仓库信息 四、克隆远端仓库到本地 五、git 三板斧 1. 三板斧第一招:git add 2. 三板斧第二招:git commit 解决首次 git commit 失败的问题 配置机器信息 3. 三…...
3.springcloud微服务架构搭建 之 《springboot自动装配ribbon》
1.springcloud微服务架构搭建 之 《springboot自动装配Redis》 2.springcloud微服务架构搭建 之 《springboot集成nacos注册中心》 ribbon工作原理自己网上百度,说的都很详细 目录 1.项目引入openfeign和ribbon配置 2.新建lilock-ribbon-spring-boot-starter 3…...
【一】进程到底是个啥?
1. 什么是进程 进程(process):一个运行起来的程序,就是进程!,我们可以在任务管理中看到进程。 进程是操作系统进行资源分配的基本单位 2. 进程的管理 所谓的进程管理,其实就是分为两步&…...
[蓝桥杯] 双指针、BFS和DFS与图论问题
文章目录 一、日志统计 1、1 题目描述 1、2 题解关键思路与解答 二、献给阿尔吉侬的花束 2、1 题目描述 2、2 题解关键思路与解答 三、红与黑 3、1 题目描述 3、2 题解关键思路与解答 3、2、1 dfs题解代码 3、2、2 bfs题解答案 四、交换瓶子 4、1 题目描述 4、2 题解关键思路与…...
编译原理陈火旺版第四章课后题答案
下面答案仅供参考! 1.考虑下面文法G1: (1) 消去 Q 的左递归。然后,对每个非终结符,写岀不带回溯的递归子程序。 (2) 经改写后的文法是否是LL(1)的?给出它的预测分析表。 2.对下面的文法G: P→(E)lalblΛ (1)计算这个文法的每个非…...
【LeetCode】剑指 Offer(25)
目录 题目:剑指 Offer 49. 丑数 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 49. 丑数 - 力扣&…...
【数据结构】链表OJ
Yan-英杰的主页 悟已往之不谏 知来者之可追 目录 编辑 编辑二、分享:OJ调试技巧 编辑三、链表的中间结点 编辑四、链表中倒数第k个结点 一、移除链表元素 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,…...
电子工程师必须掌握的硬件测试仪器,你确定你都掌握了?
目录示波器示例1:测量示波器自带的标准方波信号输出表笔认识屏幕刻度认识波形上下/左右移动上下/左右刻度参数调整通道1的功能界面捕获信号设置Menu菜单触发方式触发电平Cursor按钮捕捉波形HLEP按钮参考资料频谱分析仪器信号发生器示波器 示例1:测量示波…...
高速PCB设计指南系列(四)
第二篇 抗干扰3(部分) 3 提高敏感器件的抗干扰性能 提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不正常状态尽快恢复的方法。 提高敏感器件抗干扰性能的常用措施如下: (1&…...
ODrive入门配置
目录一、驱动板说明二、安装python三、安装odrivetool四、接线五、zadig设置SimpleFOC、ODrive和VESC教程链接汇总:请点击一、驱动板说明 ODrive 硬件版本:V3.6-56V, 工作电压:12V-56V, 工作电流:60A ODri…...
快速测试两台服务器间的网速(ChatGPT回复)
如何使用iperf3测试从远程服务器下载文件速度 在进行网络性能测试时,了解服务器之间的带宽和延迟是非常重要的。iperf3是一种用于测量网络性能的工具,可以帮助我们测试从远程服务器下载文件的速度。本文将介绍如何在本地计算机上使用iperf3测试从远程服…...
彻底搞懂nodejs事件循环
nodejs是单线程执行的,同时它又是基于事件驱动的非阻塞IO编程模型。这就使得我们不用等待异步操作结果返回,就可以继续往下执行代码。当异步事件触发之后,就会通知主线程,主线程执行相应事件的回调。 以上是众所周知的内容。今天…...
Linux基础命令大全(下)
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放࿰…...
Matplotlib从入门到精通05-样式色彩秀芳华
Matplotlib从入门到精通05-样式色彩秀芳华总结Matplotlib从入门到精通05-样式色彩秀芳华导入依赖一、matplotlib的绘图样式(style)1.matplotlib预先定义样式2.用户自定义stylesheet3.设置rcparams二、matplotlib的色彩设置(color)…...
英雄联盟Akari助手:智能游戏伴侣让你的排位赛效率提升10倍
英雄联盟Akari助手:智能游戏伴侣让你的排位赛效率提升10倍 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟中繁琐的…...
微信好友关系终极检测:WechatRealFriends帮你一键识别单向好友
微信好友关系终极检测:WechatRealFriends帮你一键识别单向好友 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFri…...
别再只用VLC看片了!手把手教你把它变成家庭流媒体服务器(支持UDP/TCP)
解锁VLC的隐藏技能:打造家庭专属流媒体系统的完整指南 你是否曾为在不同设备间切换观看本地视频而烦恼?每次都要用U盘拷贝或者忍受云盘缓慢的上传下载速度?其实,你电脑上那个熟悉的橙色锥形图标——VLC播放器,远比你想…...
Apache Flink未授权访问漏洞深度剖析:从Dashboard暴露到Jar包上传攻击链
1. Apache Flink未授权访问漏洞全景透视 第一次接触Apache Flink的漏洞场景是在去年某次企业内网渗透测试中。当时发现目标系统开放着8081端口,访问后竟直接看到了Flink Dashboard的完整控制界面——没有任何登录验证,就像走进了一家没锁门的银行金库。这…...
2026十大建议考的经济学专业证书有哪些
2026年十大经济学专业证书推荐经济学专业证书能够提升职业竞争力,尤其在数据分析、金融和经济预测领域。以下是2026年值得考取的十大经济学专业证书,包括CDA数据分析师证书等热门选择。1. CDA数据分析师证书CDA数据分析师证书是数据分析领域的权威认证&a…...
FPGA动态电压调节技术与PMBus控制路径设计
1. FPGA动态电压调节技术概述 在当今计算密集型应用中,FPGA因其可重构性和并行处理能力而广受欢迎,但随之而来的功耗问题也日益突出。动态电压调节技术(Dynamic Voltage Scaling, DVS)作为一种有效的功耗优化手段,允许系统根据工作负载实时调…...
[leetcode] 25. K 个一组翻转链表 Reverse Nodes in k-Group
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值&a…...
ARMv8内存管理:TCR_EL1寄存器详解与实战配置
1. ARMv8内存管理基础与TCR_EL1概述在ARMv8架构中,内存管理单元(MMU)通过多级页表机制实现虚拟地址到物理地址的转换。TCR_EL1(Translation Control Register for EL1)作为关键控制系统寄存器,定义了EL1异常级别下的地址转换行为规范。这个64位寄存器包含…...
Cursor AI 编辑器一键配置指南:从零搭建高效编程工作站
1. 项目概述:一个为 Cursor 编辑器量身定制的“开箱即用”向导如果你是一名开发者,最近肯定没少听人提起 Cursor 这款编辑器。它基于 VS Code,但深度集成了 AI 能力,号称能理解你的代码上下文,帮你写代码、改 Bug、甚至…...
PacketStreamer传感器工作原理:深入解析BPF过滤机制
PacketStreamer传感器工作原理:深入解析BPF过滤机制 【免费下载链接】PacketStreamer :star: :star: Distributed tcpdump for cloud native environments :star: :star: 项目地址: https://gitcode.com/gh_mirrors/pa/PacketStreamer PacketStreamer是一款专…...
