这是重一本书上抄下来的程序,就是在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);
}
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);
}
解决方案 »
- 多个ocx可以打一个cab文件吗
- list control 添加点击消息
- WSPSendto()这么写为什么结果是0.0.0.0和204.204.204.204?
- 为什么一个进程/线程 需要id 和 handle 两个属性来标识 ?
- 请问如何在程序中验证win98系统的用户名和密码?
- 一个用ado写入sql库怪怪的问题,用order by 写入的居然是乱序!
- {十万火急 ,关于CListView }
- 周末大放分(来者有分)
- 有谁来说说聚合,包容的相关吗?
- VC中的数据库问题
- VC6 怎么不能在开发控件的时候不能使用COleClientItem做基类创建新类,很急的问题?
- 上个问题已经结帐,大白菜我还有一个更菜的问题要问:来者有分
char* cYear=" ";
因为你定义的是指针 而你没有分配空间 就给它进行赋值 这样是危险的
你可以这样 char cDay[] = " ";或者 char* cDay = new char[2]; cDay[0] = ' ';
cDay[1] = 0 itoa(m_Calendar1.GetDay(),cDay,10); 你用itoa的时候之前 也必须对cDay进行分配空间记得 如果你要用指针 使用它 最好给它分配空间 或者指向一个已经分配好的地址
或者最好你用 数组.
地址值怎么能赋给字符串呢.