首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么小弟我这个WM_CREATE只执行了一半就返回了

2012-09-04 
为什么我这个WM_CREATE只执行了一半就返回了case WM_CREATE:{hdcGetDC(hwnd)GetTextMetrics(hdc,&tm)Cx

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

热点排行