我只是开始学习Windows编程,我遵循YouTube上的教程,但我得到了这个错误,我不知道为什么,我只是正确地按照他所做的,他没有得到这个错误。 这里是代码。
//Main application loop MSG msg = {0}; while(WM_QUIT != msg.message()) { if(PeekMessage(&msg, NULL, NULL, NULL, PM_Remove)) { //Translate message TranslateMessage(&msg); //Dispatch message DispatchMessage(&msg); } }
这里是错误的:
error C2064: term does not evaluate to a function taking 0 arguments fatal error C1903: unable to recover from previous error(s); stopping compilation
当我点击它,他们都指向while循环。 谢谢。
MSG结构的message
成员是一个字段,而不是一个方法。 您应该访问它而不是调用它:
while (WM_QUIT != msg.message) { // ... }
你的代码片段还有其他的问题。 首先,C ++是一个区分大小写的语言,所以PeekMessage()
的最后一个参数应该是PM_REMOVE
而不是PM_Remove
。
另外,如果消息队列是空的, PeekMessage()不会阻塞,所以你的代码将最终消耗100%的CPU核心。 您可以使用GetMessage()来代替,如果没有可用的消息,将会阻塞,并允许您删除WM_QUIT
的显式测试:
MSG msg = { 0 }; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }