为什么我这个WM_CREATE只执行了一半就返回了
case WM_CREATE:
{
hdc=GetDC(hwnd);
GetTextMetrics(hdc,&tm);
CxClient=GetSystemMetrics(SM_CXSCREEN);
Cyclient=GetSystemMetrics(SM_CYSCREEN);
iWsize=CxClient/tm.tmAveCharWidth*2/3;
iHsize=Cyclient/(tm.tmExternalLeading+tm.tmHeight);
sec=(int*)malloc(iWsize*sizeof(int));
map=(char**)malloc(iHsize*sizeof(char*));
for(i=0;i<iHsize;i++)
map[i]=(char*)malloc(iWsize*sizeof(char));
//flag=0;
for(i=0;i<iWsize-1;i++)
for(j=0;j<iHsize-1;j++)
{
map[i][j]=rand()%127;
}
SetTimer(hwnd,ID_TIMER,100,NULL);
flag=0; //这个是用来检测是否被执行的 初始化为1 分别放到双重循//环前面和后面 最后的值不一样
ReleaseDC(hwnd,hdc);
}
为什么只执行到双重循环 就直接showwindow了 后面的没有执行就返回了
但是把iWise 和 iHsize的值调小一点就能一直执行完 太诡异了
[解决办法]
这一段没有问题,你想分配一个二维数组,有iHsize行和iWsize列
- C/C++ code
map=(char**)malloc(iHsize*sizeof(char*));
for(i=0;i <iHsize;i++)
map[i]=(char*)malloc(iWsize*sizeof(char));
这是你进行的循环。为什么这里就变成iWsize表示行而iHsize表示列了?
- C/C++ code
for(i=0;i <iWsize-1;i++)
for(j=0;j <iHsize-1;j++)
{
map[i][j]=rand()%127;
// 行 列
}