0

如果这个问题对于有经验的程序员来说太简单了,我深表歉意。我刚开始使用 Petzold 了解 windows 的基础知识,但在 Mathematica 和一些 C 和 Labview 方面有编程经验。

我不了解 Windows 中的消息循环,它似乎实现为 While 循环,似乎在“正常”C 程序中,只要条件保持为真,while 循环就会运行,然后程序转到下一条指令,直到程序结束。我将其想象为导致程序执行和结束的一系列事件,这与 Labview 程序的哲学不同,其中时间和序列不太重要,除非用户中断,否则程序可能永远不会结束。

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

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

我要说的是,使用如下所示的程序:

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

我认为它只会执行代码块并在那里结束。但在 Windows 中,它会一直“等待”条件为真以执行代码。我相信我没有做到这一点,这就是为什么我要求任何人为我清理这个机制。

4

1 回答 1

0

动作发生在基于条件的 Windows 循环中。通常,该条件是由于窗口对象(按钮、复选框、单选按钮、列表框中的选择等)由于已发生的条件而发送消息。在按钮的情况下,按钮被按下;在列表框的情况下,输入或选择了某些内容。

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

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

条件说“stpp 程序”将被捕获,并且编写的代码将跳出主窗口处理循环。这将允许程序退出。

于 2014-06-11T19:16:48.790 回答