这是重一本书上抄下来的程序,就是在Calendar控件上双击就会显示双击的日期,但是我双击后总是报“该程序执行了非法操作”错误,我用F11键调试,发现第一行语句就有问题,请问各位虾哥们我该如何修改?
void CDialogDlg::OnDblClickCalendar1() 
{
CString cSelectedDate;
char*   cDay=" ";
char*   cYear=" "; itoa(m_Calendar1.GetDay(),cDay,10);
cSelectedDate=cDay; switch(m_Calendar1.GetMonth())
{
    case 1:
cSelectedDate=cSelectedDate+"January";
break;
case 2:
cSelectedDate=cSelectedDate+"February";
break;
case 3:
cSelectedDate=cSelectedDate+"March";
break;
case 4:
cSelectedDate=cSelectedDate+"April";
break;
case 5:
cSelectedDate=cSelectedDate+"May";
break;
case 6:
cSelectedDate=cSelectedDate+"June";
break;
case 7:
cSelectedDate=cSelectedDate+"July";
break;
case 8:
cSelectedDate=cSelectedDate+"August";
break;
case 9:
cSelectedDate=cSelectedDate+"September";
break;
case 10:
cSelectedDate=cSelectedDate+"October";
break;
case 11:
cSelectedDate=cSelectedDate+"November";
break;
case 12:
cSelectedDate=cSelectedDate+"December";
break;
}
itoa(m_Calendar1.GetYear(),cYear,10);
cSelectedDate=cSelectedDate+cYear;
AfxMessageBox("You Double-clecked on:"+cSelectedDate,MB_OK|
MB_ICONINFORMATION,0);
}

解决方案 »

  1.   

    不能这样 char*   cDay=" ";
    char*   cYear=" ";
    因为你定义的是指针 而你没有分配空间 就给它进行赋值 这样是危险的
    你可以这样 char cDay[] = " ";或者 char* cDay = new char[2]; cDay[0] = ' '; 
    cDay[1] = 0 itoa(m_Calendar1.GetDay(),cDay,10); 你用itoa的时候之前 也必须对cDay进行分配空间记得 如果你要用指针 使用它 最好给它分配空间 或者指向一个已经分配好的地址
    或者最好你用 数组.
      

  2.   

    cSelectedDate=cDay;
    地址值怎么能赋给字符串呢.