读书人

为什么小弟我这个WM_CREATE只执行了一

发布时间: 2012-09-04 14:19:30 作者: rapoo

为什么我这个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;
// 行 列
}

读书人网 >VC/MFC

热点推荐