有人会解释我这个C ++代码吗?

时间:2017-10-01 14:19:41

标签: c++ while-loop

#include<iostream>
#include<windows.h>

Using namespace std;

Int main()    
{
    MSG Msg;
    While(GetMessage (&Msg,NULL,0,0)){
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您可以使用代码标记(括号)将代码放在格式化的框中。

因此,在main函数中,MSG Msg;启动一个名为Msg。

的MSG对象

下一行While(GetMessage (&Msg,NULL,0,0)){是一个while循环,它将重复块内的所有代码,同时为true。在这种情况下,这意味着只要在调用线程的消息队列中有消息,块内的代码就会重复。该函数的参数意味着输出定向到先前启动的Msg对象,NULL意味着将为线程中的任何窗口检索消息。最后两个参数用于过滤,但由于它们都是0,这意味着将检索所有消息(无过滤器)。

TranslateMessage函数TranslateMessage(&Msg);用于将键盘输入转换为消息。如果转换了消息,则将其添加到线程队列中。

DispatchMessage函数DispatchMessage(&Msg);执行消息的实际处理,并用于向相关函数发送消息。

所有这一切的目的本质上是一个消息队列来捕获和处理事件/输入,并在必要时在windows / theads之间进行通信。