MFC是微软开发的基础类库,主要用来开发图形界面应用程序,在学习中,我们要验证算法好坏,一般需要对结果进行可视化。

OpenCV是计算机视觉中的开源算法库,集成了很多先进算法,现在想将MFC与OpenCV进行结合,开发出带有界面的算法程序,可进行界面交互。

由于前期学的比较渣,学了QT,MFC,但都是半吊子。今天从头开始复习整理下MFC基础知识。

1. 环境搭建

visual studio 2015 community 版本,免费且强大的IDE,默认可能没有MFC,可以在里面搜索安装,这里略去。

安装后启动【file】>【new】>【project】,点击如下情况新建一个MFC应用程序

2. MFC程序框架简单配置,选择基于对话框程序,并用静态库配置,这样程序可以更好在其他windows电脑上使用,但程序会比动态链接大点。

其他参数可以默认,也可以根据需要进行配置。

3 打开打开【resource view】资源试图中对话框设计界面

并在其中添加静态文本,按钮及图片控件,可以将默认的直接删除,之后为如下情况

在图片控件上点击鼠标右键,选择属性:并将ID改为ID_VIEW,获得一张bmp格式图像保存到工程文件夹res中,并右键点击资源视图中的 *.rc文件选择【Add Resources】

按中间的图选择,并导入res中的图像。可以发现,资源中多了个Bitmap文件夹,IDB_BITMAP1就是导入图片的默认ID

现在,可以将图片与图片控件进行关联,选择图片控件的属性,将Type下拉选择bitmap,之后会发现Image也出现了下拉菜单,直接选择刚才图片ID

  

然后,可以在控件中调整大小,使显示更完整,如图所示,这样图片静态显示就完成了。

3. 如图中【python】、【计算器】、【记事本】功能一样,打开其他应用程序,双击按钮,到代码编辑页面,输入如下代码,并在该文件中添加头文件 #include <assert.h>

void Cdemo01Dlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
// 改变 *.exe 路径可以打开对应软件,"notepad.exe"打开记事本,"calc.exe"打开计算器
HINSTANCE hRslt = ShellExecute(NULL, _T("open"), _T("E:/Python36/python.exe"),
NULL, NULL, SW_SHOWNORMAL);
assert(hRslt > (HINSTANCE)HINSTANCE_ERROR);
}

4. 打开关于对话框,我们发现资源中有一个about 对话框,但默认情况下并无卵用,我们添加一个按钮【关于】来调用它,双击并编辑代码:

void Cdemo01Dlg::OnBnClickedButton5()
{
// TODO: Add your control notification handler code here
CAboutDlg dlg;
dlg.DoModal();
}

5. 退出按钮代码

void Cdemo01Dlg::OnBnClickedButton4()
{
// TODO: Add your control notification handler code here
PostQuitMessage();
}

6. 结果

------------------------------------------ Done ---------------------------------------------------------

MFC入门--显示静态图片及调用本地软件的更多相关文章

  1. mfc显示静态图片最简单的方法

    一致都是研究如何调用opencv显示动态图片,但是很多时候在显示图标的时候,都是需要显示静态图片,现在将最简单的方法总结下: 1.添加picture控件 2.添加资源,要求为bmp 3.修改属性 结果 ...

  2. Android 加载gif图片强大框架(支持预加载、缓存,还支持显示静态图片,一行代码全搞定)

    之前项目中没有涉及到显示gif图片的功能,也没有着重研究过,最近项目中要用到显示gif图片,于是就在网上一顿搜,用过之后发现如下几个缺点. 1.加载大的gif图片会出现oom. 2.没有预加载和缓存功 ...

  3. MFC对话框显示BMP图片

    1.MFC对话框显示BMP图片我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) ...

  4. 基于FPGA的VGA显示静态图片

    终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...

  5. FPGA驱动VGA显示静态图片

    一 .前言 本文设计思想采用明德扬至简设计法.VGA是最常见的视频显示接口,时序也较为简单.本文从利用显示屏通过VGA方式显示测试图案及静态图片着手带大家接触图像显示应用,算是为后续VGA显示摄像头采 ...

  6. MFC CListCtrl 显示bmp图片

    m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle()| LVS_EX_SUBITEMIMAGES | LVS_EX_GRIDLINES); ...

  7. vue中显示静态图片怎么引用

    有多种方法解决这个问题: 首先,如果使用的是img标签那么可以这样 data () { return { img: require('path/to/your/source') } } 然后在temp ...

  8. js通过注册表找到本地软件安装路径并且执行

    场景:用js执行本地的安装软件,如果不存在就执行安装 操作步骤: 1.前台js代码 <script type="text/javascript"> function e ...

  9. MFC入门(三)-- MFC图片/文字控件(循环显示文字和图片的小程序)

    惯例附上前几个博客的链接: MFC入门(一)简单配置:http://blog.csdn.net/zmdsjtu/article/details/52311107 MFC入门(二)读取输入字符:http ...

随机推荐

  1. hdu多校第六场1008 (hdu6641)TDL 暴力

    题意: 设f(n,m)为比n大的第m个和n互质的数,给定一个k=(f(n,m)-n)xor n和m,求最小的n 题解: 对于给定的m而言,一个k周围合法的n分布的很密,因此在k的邻域暴力搜索即可. # ...

  2. C#-Api:身份证识别

    ylbtech-C#-Api:身份证识别 通过POST上传base64格式的图片内容,可识别二代身份证.驾照.行驶证.军官证.中华人民共和国往来港澳通行证.台湾居民往来大陆通行证.大陆居民往来台湾通行 ...

  3. 简述MapReduce数据流

    目前it基本都是一个套路,获得数据然后进行逻辑处理,存储数据. 基本上弄清楚整个的数据流向就等于把握了命脉. 现在说说mapreduce的数据流 1.首先数据会按照TextInputFormat按照特 ...

  4. Altium Designer 精心总结(转)

    https://blog.csdn.net/qq_29350001/article/details/52199356 设置铺铜间距规则,Electrical-Clearence_Poly设置如下,是铺 ...

  5. mybatis 3 批量插入返回主键 Parameter 'id' not found

    @Insert("<script>INSERT INTO scp_activity_gift (activity_id,type,gift_id,status,limit_num ...

  6. 实现solr热词排行榜

    现在有业务场景,要求实现词库里面,最新,最热的词并显示,点击热词后可以进入相关信息的文章或者句子 热词的显示频率12小时更新一次. 实现思路: 实现步骤:

  7. Python匹马行天下之_循环

    一.while循环 如果条件成立(true),重复执行相同操作,条件不符合,跳出循环 while   循环条件: 循环操作 (1)while循环示例 例:输入王晓明5门课程的考试成绩,计算平均成绩 1 ...

  8. centOs 查看系统cpu使用率等--top

    原文:centOs 查看系统cpu使用率等--top 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CP ...

  9. PROJECT | 四则运算UI设计 - PSP表格&需求分析

    PSP表格(TP版) 需求分析 [GUI编程语言选择] 考虑到Java编写GUI效率偏低且界面不算特别美观(即使有Windowbuilder插件帮助),所以我们使用控件更多,开发效率更高,具有集成开发 ...

  10. Python自学:第五章 列表解析

    # -*- coding: GBK -*- squares = [value**2 for value in range(1,11)] print(squares) 输出为: [1, 4, 9, 16 ...