我是靠谱客的博主 虚拟铃铛,最近开发中收集的这篇文章主要介绍C语言(2)多线程与简单操作应用窗口,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 0、补充
    • 1、线程
    • 2、操作win窗口
        • 2.1、遇到的错误以及解决办法
    • 3、窗口操作的其他姿势
        • 3.1、创建父子窗口
        • 3.2、模拟操作系统给窗口发消息
        • 3.3、配置取消程序运行的黑窗口(可选)

0、补充

~程序运行时产生的黑窗口是可以隐藏的,具体过程可以百度谷歌

~在VC内,选择英文字母之后,
	
	ctrl+u				全部变小写

	ctrl+shift+u		全部变大写

1、线程

创建线程,要包含一个头文件:#include <process.h>

	“void*”表示空地址,
	
	“_beginthread”表示开启线程
	
	14行的代码,是弹出一个框,显示后边具体的字符串,

在这里插入图片描述
直接运行,旷课弹出之后秒退,无法看到到底弹了几个框,

主要是主线程没有暂停,一会就挂了,子线程自然也挂了;在主线程加一个“暂停”
在这里插入图片描述
再次运行,发现弹了5个框。这也是并发的好处,
在这里插入图片描述

这里有一个报错,如图所示。原因是这个地方选择的“x86”,改为“x64”解决,
在这里插入图片描述

2、操作win窗口

先打开电脑计算器,在打开这个Spy++,

在这里插入图片描述

按照图中箭头依次点击,可以获取到计算器这个窗口的标题与类(名称),下边的句柄会用到。

在这里插入图片描述

写一个程序来判断,电脑界面上有没有打开计算器这个窗口,假设找到了,则做一个闪烁效果,

没找到则弹出一个友好提示框,并返回一个错误。

	HWND是“句柄”即指针,后边两个参数一个是计算器的类名称,另一个是标题。

	11行,没找到对应的计算器窗口弹出一个友好的提示窗口

	12行,返回-1(错误)	、、貌似0或者不写也可以

	16行,将窗口隐藏;参数为句柄、对应操作

	17行,延时500毫秒

	18行,将窗口显示

在这里插入图片描述

直接运行,计算器打开了但是并没闪烁。
	
	没有弹框提示说明找到了,这个是我们没有使用循环,直接加一个死循环。

在这里插入图片描述

再次运行就会出现计算器一闪一闪的效果。

2.1、遇到的错误以及解决办法

运行程序报下边的错误,将30行的单引号改为双引号即可。

在这里插入图片描述
笔者理解:

这里主要是因为C语言之中,单引号一般只能用来包含‘ 字符 ’,

对于字符串只能使用双引号来包含

3、窗口操作的其他姿势

3.1、创建父子窗口

新建一个项目,选择“MFC应用”,

假设没有参考安装,https://blog.csdn.net/qq_35392239/article/details/109190131

在这里插入图片描述
“基于对话框”,

在这里插入图片描述

这里没有“类资源图”的话,快捷键“ctrl+shift+e”;或者“视图”--“其他窗口”--“资源视图”,

在这里插入图片描述

写入自己的代码,点击生成,

在这里插入图片描述

找到程序,点击按钮,弹出指定内容。

在这里插入图片描述

来简述下这个原理,其本质就是一个死循环,一直监听鼠标有没有点击对应的按钮。

	假设鼠标点击了,就弹窗。

但是电脑上有很多的应用都在监听鼠标和键盘等资源,这样不会乱吗,或者说谁的优先级更高呢?

	这一切其最底层都是由“操作系统”来监听。这个过程被称为“消息机制”

	操作系统来监听鼠标和键盘的动作,然后将监听到的动作发给不同在监听窗口的应用。

额外说明下,上述我们创建的窗口最外部是父窗口,里边“button1”是子窗口,

3.2、模拟操作系统给窗口发消息

了解这个原理,可以推出,我们是否可以“模拟”操作系统给对应正在监听的窗口发“假消息”呢?

	使用spy++获取子窗口信息(标题+类)

在这里插入图片描述
在获取下父窗口,父窗口因为我们没有给标题信息,所以只显示有一个类。
在这里插入图片描述

在上边提到的程序,魔改下,
	
	10行找到父窗口。具体函数每个参数是什么作用可以去百度找下。
	
	11行是找到子窗口,注意的是这个寻找子窗口的函数,使用的是“增强版查找”,
	
	这里多说下,不能直接寻找子窗口(会找不到),(貌似)只能通过父窗口寻找。

在这里插入图片描述

然后经过测试,这个不写父窗口的标题,无法找到。

返回VS,给父窗口加一个标题。

	下图的属性,可以在布局之中,右击“属性”;
	
	假设打开的是中文版本,则"Caption"对应的是“描述文字”

在这里插入图片描述
然后保存,重新生成,然后还是没有找到。最后忽略类名找到的,
在这里插入图片描述
最终的效果是,先手动打开刚刚新建的窗口,然后运行该程序会关闭掉新打开的窗口。

接下来,尝试操作子窗口;找到子窗口来关闭子窗口,

在这里插入图片描述
先打开这个exe,然后运行程序,看看效果。
在这里插入图片描述
当程序跑起来之后,这个按钮直接消失了。
在这里插入图片描述

当然,除了模拟发送关闭窗口的指令,还可以模拟点击该按钮的功能,

	改下指令就好了

在这里插入图片描述

在这里插入图片描述
双击生成的exe,

在这里插入图片描述
禁用按钮,
在这里插入图片描述
生成demo1并运行,程序的按钮直接变黑。
在这里插入图片描述
过了3秒,又可以点击了,
在这里插入图片描述

3.3、配置取消程序运行的黑窗口(可选)

有这个黑窗口还是太烦,配置下,

在这里插入图片描述
第二处配置,
在这里插入图片描述

最后

以上就是虚拟铃铛为你收集整理的C语言(2)多线程与简单操作应用窗口的全部内容,希望文章能够帮你解决C语言(2)多线程与简单操作应用窗口所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部