gpt4 book ai didi

c++ - GetMessage() 破坏了我的堆栈?

转载 作者:行者123 更新时间:2023-11-28 02:21:10 26 4
gpt4 key购买 nike

多年来,我在各种不同的程序中使用了以下功能。它一直没有错误。直到现在,我第一次尝试让它针对 64 位代码工作。

我尝试逐行执行代码...首先我执行 something_done = TRUE; 这行(显然)将 something_done 设置为 1...我在“观察”窗口。然后我执行 GetMessage (&msg, NULL, 0, 0); ... 但不知何故在执行期间,变量 something_done 被设置为零!随后,代码跳出循环,从函数调用返回时,编译器报告“运行时检查失败 #2 - 变量‘msg’周围的堆栈已损坏。”

我不确定从这里到哪里去。

void process_messages_until_idle()
{
MSG msg;
int something_done;
int temp;

for (;;)
{
something_done = FALSE;

temp = PeekMessage(&msg,NULL,0,0,PM_NOREMOVE);

if (temp)
{
something_done = TRUE;
GetMessage (&msg, NULL, 0, 0);
TranslateMessage (&msg);
DispatchMessage (&msg);
}

if (!something_done)
{
break;
}
}
}

更新:我将 something_done 更改为 static 现在程序在其他地方完全崩溃了 - 在一个更有意义的地方,所以这可能更容易调试.

最佳答案

虽然在您执行 PeekMessage 时有一条消息,但有些东西可能已经改变了。

if (GetMessage(&msg, NULL, 0, 0) > 0) {
something_done = TRUE;
TranslateMessage (&msg);
DispatchMessage (&msg);
}

关于c++ - GetMessage() 破坏了我的堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32424089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com