Windows程序中的消息循环是否总是“循环”?

时间:2014-06-11 19:07:37

标签: c loops message getmessage

如果问题对于有经验的程序员来说太容易了,我道歉。我刚刚开始使用Petzold的windows基础知识,但是在Mathematica和一些C和Labview中有编程经验。

我不了解Windows中的消息循环,它实现为一个While循环,似乎在" normal"只要条件保持为真,C程序就会运行while循环,然后程序转到下一条指令,直到程序结束。我把它想象成导致程序执行和结束的一系列事件,而不是Labview程序的相同理念,其中时间和序列不重要,除非用户干扰,否则程序可能永远不会结束。

据我所知,除非你打断程序,否则消息循环会一直持续下去。几乎表现为无限循环,始终处于活动状态。如果消息循环的真/假条件发生变化,由GetMessage的布尔结果给出,那么一旦你得到一个假,程序就不会在那里结束?

在Labview程序中,没有强烈的时间概念或操作顺序,任何条件都可能在任何给定时刻发生变化,如While循环的真/假条件,然后循环将开始执行一个块代码或停止,没有暗示程序在某种程度上更接近它的结束。它在Windows中是如何工作的吗?

我所说的是一个看起来像这样的程序:

WinMain()
{....
while(condition)
{execute code}
....}

我认为它只会执行代码块并在那里结束。但在Windows中它会保持等待"为了执行代码,条件为真。我相信我没有得到这个权利,这就是为什么我要求任何人为我清理这个机制。

1 个答案:

答案 0 :(得分:0)

根据条件在Windows循环中执行操作。通常这种情况是由于窗口对象(按钮,复选框,单选按钮,列表框中的选择等)由于已发生的情况而发送消息。如果是按钮,则按下按钮;在列表框的情况下输入或选择了一些东西。

你需要一个具有case语句的windows循环,case语句包含事件类型和生成事件的window对象的id。

如果没有更详细的代码发布,除此之外很难帮助您。根据我对Windows的古老知识,有一个主要的Windows循环,它一直等待事件发生,然后根据发生的事件处理代码。处理退出计划也是这些条件之一。

条件说" stpp program"将被捕获​​,并且编写的代码将突破主窗口处理循环。这将允许程序退出。