24,854
社区成员
发帖
与我相关
我的任务
分享
while(true)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(WM_QUIT==msg.message)
break;
if(!g_hDlgModeless||!IsDialogMessage(g_hDlgModeless,&msg))
{
TranslateMessage(&msg) ;
DispatchMessage(&msg) ;
}
}
else
{
g_iCurTime=GetTickCount();
if(g_iCurTime-g_iPreTime>=FRAMERATE)
{
hdc=GetDC(hwnd);
Render(hwnd,g_iCurTime);
if(g_iTime<200&&g_iTime>=100||g_iTime>=100*NPCNUM+200&&g_iTime<100*NPCNUM+300)
Update(hwnd);
ReleaseDC(hwnd,hdc);
g_iPreTime=GetTickCount();
}
}
}
我的程序没有这种情况,我关闭程序后,程序的进程就结束了,我刚刚特意打开任务管理器试过了。并且如果进程已经停止了的话,怎么解释程序可以恢复,并且恢复后画面是可以与卡死的时间对应得上的呢?而且我的程序中还有个启动界面也有这个问题,但是资源加载完后,它依然能够打开我的主窗口,说明启动界面虽然在画面上卡死了,但是依然在执行,否则它是如何关闭自己并且打开我的主界面的呢?不知道我有没有正确理解你这段话的意思,如果没有,希望你再说明白一些吧。Sleep(100);
或
MSG msg;
if (GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
了而已。#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main() {
int a,b[11];//本来是b[10],为判断哪句越界,故意声明为b[11]
srand((unsigned int)time(NULL));//按两次F11,等黄色右箭头指向本行时,调试、新建断点、新建数据断点,地址:&b[10],字节计数:4,确定。
while (1) {//按F5,会停在下面某句,此时a的值为10,b[10]已经被修改为对应0..4之一。
b[(a=rand()%11)]=0;
Sleep(100);
b[(a=rand()%11)]=1;
Sleep(100);
b[(a=rand()%11)]=2;
Sleep(100);
b[(a=rand()%11)]=3;
Sleep(100);
b[(a=rand()%11)]=4;
Sleep(100);
}
return 0;
}