如果这个问题对于有经验的程序员来说太简单了,我深表歉意。我刚开始使用 Petzold 了解 windows 的基础知识,但在 Mathematica 和一些 C 和 Labview 方面有编程经验。
我不了解 Windows 中的消息循环,它似乎实现为 While 循环,似乎在“正常”C 程序中,只要条件保持为真,while 循环就会运行,然后程序转到下一条指令,直到程序结束。我将其想象为导致程序执行和结束的一系列事件,这与 Labview 程序的哲学不同,其中时间和序列不太重要,除非用户中断,否则程序可能永远不会结束。
据我了解,在 Windows 中,消息循环会一直持续下去,除非您中断程序。几乎表现为无限循环,始终处于活动状态。如果消息循环上的真/假条件发生变化,由 GetMessage 的布尔结果给出,那么一旦你得到一个假,程序怎么不会就在那里结束呢?
在 Labview 程序中没有时间或操作顺序的强烈概念,任何条件都可能在任何给定时刻发生变化,例如 While 循环的真/假条件,然后循环将开始执行代码块或停止没有它暗示该程序以某种方式接近其结束。这也是它在Windows中的工作方式吗?
我要说的是,使用如下所示的程序:
WinMain()
{....
while(condition)
{execute code}
....}
我认为它只会执行代码块并在那里结束。但在 Windows 中,它会一直“等待”条件为真以执行代码。我相信我没有做到这一点,这就是为什么我要求任何人为我清理这个机制。