-
while 语句是否仍在侦听消息???
while 调用的回调应该是异步的。
如果再发生事件,程序会不会视而不见,完全没有反应?
留在消息队列中。
如果在同一毫秒内有数千个事件,系统不会崩溃吗?
查看 1我知道在这种情况下可以创建另一个线程,但是创建线程需要时间,并且当您创建线程时,系统不是仍然冻结吗?
如果是单核,会按顺序执行,由内核调度,不会崩溃。
-
您的担心并非没有道理,在 95 年之前的 Windows 中,它很容易冻结。 但是,win95 采取了多种措施来避免系统崩溃。
Windows 95 充分利用了 386 处理器的强大功能,并支持两个权限级别。 它管理具有两个特权级别 0 和 3 的微处理器,也可以称为两个环。 Ring 0 中的组件是操作系统的底层,包括对低级内部存储器管理的支持,而 Ring 0 中的软件是整个系统中功能最强大的,包括几乎所有的微处理器指令和对页表等关键数据结构的访问。
因此,环 0 中的软件是最可靠的。
查看系统和应用程序在不同的权限级别以及不同的线程上运行。 即使您的程序卡住了,系统仍会将消息放入您的消息队列中。 消息循环就是将消息从消息队列中取出并处理它们。
我们经常看到一个程序没有响应,但系统很少冻结。
-
当消息队列中没有消息时,getmessage 被阻塞,也就是说,如果没有消息,它会通知系统将时间片移交给另一个进程或线程。
-
它是多线程的,不会崩溃。
-
只要情况不是无休止的循环,就不会有你担心的情况,怀疑CPU的处理速度现在在那里也是没有道理的。
-
当 Windows 处理消息时,它使用队列来存储所有消息,即消息队列。
在执行 case 语句时,虽然窗口并不关心消息队列,但如果此时有另一条消息出现,Windows 会自动将消息放入队列中,以确保消息不会丢失。
当 case 语句被处理并且窗口再次运行到 getmessage 时,它会检查队列中是否有任何未处理的消息,并以此方式获取之前发生过但尚未处理的消息,因此不会对消息视而不见。
-
虽然还在听。
换句话说,不会视而不见。
创建线程不崩溃,CPU处理速度非常快。
-
从编程语言的角度来看是可以的,但实际上它并不是一个无限循环,当没有消息时,线程进入空闲或就绪状态,然后 CPU 给其他线程执行其他任务,当前线程定时或根据某个事件找到然后执行消息循环。
-
当窗口关闭时,将收到 WM 关闭消息。
当你遇到这条消息时,消息循环就会崩溃,我记得是这样
-
这个问题有点痛苦...... 您希望程序自动退出吗?
-
TranslateMessage 内部不处理已转换的消息。
例如,当消息 A 到达时,TranslateMessage 确定消息 A 是虚拟密钥消息,并将其转换为消息 B。
B 消息本身不是虚拟密钥消息,翻译消息直接返回,无需处理。
-
C 消息被封装为事件,并作为面向对象进行处理,因此它们不会循环。
通常,可以使用表单变量属性来获取设置传递消息。
-
如上所述。 没有消息循环。 只需将其写在各种事件中即可。 例如,在双击等事件中,双击可以编写自己的**。
-
MFC 已帮助您处理 WM 关闭消息,默认情况下,您调用 DestroyWindow 以发出 WM DESTROY 消息。
-
如果你学C++,很简单,虽然C++是基于C语言基础的改进版本,但是如果你学好C语言,你不一定能熟练地学习C++,我C语言也不错,C++也学了很长时间,但我不敢说C++很厉害。 C++是面向对象的,C是面向过程的,如果你擅长C和C++,那么你绝对是编程高手,当然算法和数据结构也很重要。
-
建议房东看一看Windows编程书,可能会对你有很大帮助,如果遇到问题,多找MSDN查答案吧! 大师们就是这样炼制的!
-
API 只知道如何调用它。 如果你想理解它,你必须看看操作系统内核。
-
我向你推荐一本书,Windows 编程第五版,但我不建议你学习这个。
-
如今,只用在C语言中的东西很少,但在单片机或工业控制领域还是用得比较多。 不建议看Windows API编程,一是不学C++,很难理解Windows编程,而且本书是针对少量研究系统底层调用,开发驱动和大家可以看到的,初学者学习是不可能只用这些知识来完成一些常见的软件编程的, 如果你想学习Windows编程,实用的仍然是MFC,但它的基础也是C++。
如果你的初衷是学习一些编程知识,可以编写一些win可以使用的小程序,建议你不需要学那么复杂,VB、delphi等,可以简单易学,上手快。
-
你不必使用 Windows API,你不需要 Windows API 来编写程序来求解方程,你不需要编写一些经典的算法,你必须使用操作系统提供的功能,比如创建窗口、获取文件目录信息等。 有相当多的 Windows API,很难直接从 Windows API 创建窗口开发人员。 因此,Microsoft 以 C++ 类的形式将大部分 API 封装在 MFC 中。
可以在该黑匣子中运行的程序称为控制台程序,但它没有窗口界面,并且是标准软件。
-
我也是,谭浩强的C已经学了一个学期了。
然后学习 c... 郁闷的涅槃。
-
直观地看到您的两个画笔变量未定义为静态(当绘制消息再次出现时,窗口进程由系统执行,但不幸的是,您的情况不是静态的,并且不会保留最后一个窗口进程的值)。
当然,也使用全局变量。
写得还不错,就是类接口太简单了,给你加几个接口,修改定义,做一个完整的模板栈,如果你坚持只用两个接口,然后自己改一下,我就帮不上忙了 >>>More