c语言 - Windows程序中的消息循环是否总是"looping"?



如果这个问题对有经验的程序员来说太简单了,我很抱歉。我刚开始用Petzold学习windows的基础知识,但有Mathematica和一些C和Labview的编程经验。

我不理解的是窗口中的消息循环,它似乎作为While循环实现,似乎在"正常"C程序中,只要条件保持为真,While循环就会运行,然后程序转到下一条指令,直到程序结束。我把它看作是导致程序执行和结束的时间序列事件,而不是与Labview程序相同的哲学,在Labview程序中,时间和序列不那么重要,除非被用户打断,否则程序可能永远不会结束。

据我所知,在windows中,除非您中断程序,否则消息循环将永远持续下去。几乎像一个无限循环,总是活跃的。如果消息循环的真/假条件改变了,由GetMessage的布尔结果给出,那么为什么一旦你得到一个假,程序不就在那里结束呢?

在Labview程序中没有一个强烈的时间或操作序列的概念,任何条件都可以在任何给定的时刻改变,比如While循环的true/false条件,然后循环将开始执行代码块或停止,而不暗示程序以某种方式接近其结束。windows也是这样工作的吗?

我要说的是,有了这样一个程序:

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

我认为它只会执行代码块并在那里结束。但是在windows中,它一直"等待"条件为真,以便执行代码。

操作根据条件在Windows循环中发生。通常,该条件是由于窗口对象(按钮,复选框,单选按钮,列表框中的选择等)由于发生的条件而发送消息。如果是按钮,则按下按钮;如果是列表框,则输入或选择了某些内容。

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

没有更详细的代码发布,很难帮助你超越这一点。根据我对Windows的古老了解,有一个主Windows循环,它一直等待事件发生,然后根据这些事件的发生处理代码。处理退出计划也是这些条件之一。

表示"stpp program"的条件将被捕获,所编写的代码将跳出主窗口处理循环。

最新更新