学习笔记

面向小白的C语言教程(005)-创建MFC界面程序

2019-04-29  本文已影响3人  爱学习的老周

创建MFC界面程序

1、创建MFC程序:

直接搜索MFC


030.png

如果搜索不到,那就是没安装,连上网络,找到你的Visual Studio Installer并打开,点击【修改】 —【使用C++的桌面开发】 — 【C++MFC for v142生成工具】,安装就可以了。


031.png
然后创建MFC程序,在【应用程序类型】里选择【基于对话框】,点击【完成】,这样就创建好了一个MFC程序,你可能还是看不到界面,进行以下操作:找到右边的文件目录,点开【资源文件】—找到以.rc结尾的文件,双击打开,打开Dialog,双击文件IDD_MFCAPPLICATION1_DIALOG:
032.gif

对其进行调试,会弹出一个空对话框, 只有确定和取消两个。

我们现在要实现一个功能,点击一个按钮打开Windows系统的计算器。

点击试图—工具箱—将button拖入到对话框中,点击button1按钮—找到右下角属性—外观—caption设置为【计算器】,我们调试一下,此时点击计算器是没有反应的:


033.gif

我们双击【计算器】按钮,会打开一个.cpp并定位到一行函数上,这个文件里的代码就是MFC对话框的实现代码,具体怎么实现的,现在不需要理解。定位到的那一行函数就是你点击那个按钮将会触发执行的函数,可以看到函数体是空的,所以刚才点击的时候没有反应。此时我们需要在函数体中添加一些代码:

void CMFCApplicationDlg::OnBnClickedButton1()
{
#include<stdlib.h>
    system("calc");
    // TODO: 在此添加控件通知处理程序代码
}

再次调试:


034.gif

这意味着一个按钮可以触发任何DOS命令。

例如我想打开QQ,关闭QQ:


035.png
void CMFCApplicationDlg::OnBnClickedButton2()
{
    system("E:\\QQ\\Bin\\QQScLauncher.exe");//
    // TODO: 在此添加控件通知处理程序代码
}


void CMFCApplicationDlg::OnBnClickedButton3()
{
    system("taskkill /f /im QQ.exe");
    // TODO: 在此添加控件通知处理程序代码
}

调试结果:


036.gif

还可以打开浏览器并指定网址(此例打开火狐指定百度地址):

void CMFCApplicationDlg::OnBnClickedButton4()
{
    system("E:\\Firefox\\firefox.exe https://www.baidu.com");
    // TODO: 在此添加控件通知处理程序代码
}
037.gif

介绍一个符号:&,此符号可用于指令并行

如果我们设置一个查看进程的按钮,即

void CMFCApplicationDlg::OnBnClickedButton5()
{
    system("tasklist");
    // TODO: 在此添加控件通知处理程序代码
}

会发现窗口一闪而过,这是指令执行完自动关闭了。你可能会觉得在后面接一行system(“pause”)就可以了,但你调试之后会发现,加了暂停指令,执行完查看进程的指令后窗口仍然会关掉,然后再打开一个新的窗口执行system(“pause”),此时程序暂停,等待手动关闭。

038.gif
我们要这样写才可以,
void CMFCApplicationDlg::OnBnClickedButton5()
{
    system("tasklist & pause");
    // TODO: 在此添加控件通知处理程序代码
}

这意味着&(and)两边的指令在一个窗口中并行。我们还可以用此方式将进程信息导入到文本文件中并打开文件,还可以查看这个程序本身的源代码,改变CMD窗口的标题和颜色等一切可以用DOS命令实现的功能都可以实现。

这里不一一演示。

讲一下什么是同步(阻塞)状态什么是异步状态

我们写以下代码:

#include<stdlib.h>
void main(){
    system("notepad");
    system("notepad");
    system("notepad");
}

调试的时候你不会看到三个被同时打开的记事本,而是关掉一个,才会打开下一个,这件同步状态,也叫阻塞状态。我们改一下代码:

#include<stdlib.h>
void main(){
    system("start notepad");
    system("start notepad");
    system("start notepad");
}

再次调试就会看到三个同时打开的记事本,这叫异步状态,即不需要关闭前一个就可以直接打开下一个。

关注微信公众号axxd_lz回复【C语言】获取视频教程和电子书。

上一篇下一篇

猜你喜欢

热点阅读