{
// TODO: Add your message handler code here and/or call default
VSNET_ClientShowcallback(m_hHandle, ShowCallBack1, NULL);
leftPic = CMFCRemoteDlg::tempImg;
if (nIDEvent == 1)
{
if (leftPic != NULL)
{
CDC* pDC1 = m_video.GetDC();
HDC pHdc1 = pDC1->GetSafeHdc();
CRect rect1;
rect1.right = 640;
rect1.bottom = 480;
cvvleftPic.CopyOf(leftPic);
cvvleftPic.DrawToHDC(pHdc1, &rect1);
ReleaseDC(pDC1);
cvReleaseImage(&CMFCRemoteDlg::tempImg);
}
}
if (nIDEvent == 2)
{
cvShowImage("test", leftPic);
}
if (nIDEvent == 3)
{
char * cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";
char * c=strcat(m, cou);
char * p = ".jpg";
char * filename = strcat(c, p);
cvSaveImage(filename, leftPic);
count++;
}
CDialogEx::OnTimer(nIDEvent);
}
一个按钮的单击事件
void CMFCRemoteDlg::OnClickedButtonRes()
{
// TODO: Add your control notification handler code here
SetTimer(3, 1000, NULL);
}
单击这一按钮后程序直接停止工作,不知道是什么原因,上面nIDEvent == 3里的代码有什么问题吗?
想实现定时让一秒存一张从服务器那边传来的图像到文件夹里面,传过来的都在leftPic变量里面,是IPLIMAGE类型的,
哪位好心人可以帮忙解答一下?不胜感激。
4 个解决方案
#1
char * c=strcat(m, cou);
m的内存是在程序数据区,是不可以改写的,另外,你这样操作也不对,因为内存数量不足
m的内存是在程序数据区,是不可以改写的,另外,你这样操作也不对,因为内存数量不足
#2
那请问应该怎么写,可以给指导一下吗?谢谢啦~~~,我真的没有思路呀~~~
#3
if (nIDEvent == 3)
{
char * cou = (char *)malloc(sizeof(char) + 1);
cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";
char* c = (char*)malloc(strlen(m) + strlen(cou) + 1);
strcpy(c, m);
strcat(c, cou );
char * p = ".jpg";
char * filename = (char *)malloc(strlen(c) + strlen(p) + 1);
strcpy(filename, c);
strcat(filename, p);
cvSaveImage(filename, leftPic);
count++;
}
改成这样写了,可是为什么还是不可以,也是程序直接停止工作。。。。
{
char * cou = (char *)malloc(sizeof(char) + 1);
cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";
char* c = (char*)malloc(strlen(m) + strlen(cou) + 1);
strcpy(c, m);
strcat(c, cou );
char * p = ".jpg";
char * filename = (char *)malloc(strlen(c) + strlen(p) + 1);
strcpy(filename, c);
strcat(filename, p);
cvSaveImage(filename, leftPic);
count++;
}
改成这样写了,可是为什么还是不可以,也是程序直接停止工作。。。。
#4
好了,谢谢您~~~
#1
char * c=strcat(m, cou);
m的内存是在程序数据区,是不可以改写的,另外,你这样操作也不对,因为内存数量不足
m的内存是在程序数据区,是不可以改写的,另外,你这样操作也不对,因为内存数量不足
#2
那请问应该怎么写,可以给指导一下吗?谢谢啦~~~,我真的没有思路呀~~~
#3
if (nIDEvent == 3)
{
char * cou = (char *)malloc(sizeof(char) + 1);
cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";
char* c = (char*)malloc(strlen(m) + strlen(cou) + 1);
strcpy(c, m);
strcat(c, cou );
char * p = ".jpg";
char * filename = (char *)malloc(strlen(c) + strlen(p) + 1);
strcpy(filename, c);
strcat(filename, p);
cvSaveImage(filename, leftPic);
count++;
}
改成这样写了,可是为什么还是不可以,也是程序直接停止工作。。。。
{
char * cou = (char *)malloc(sizeof(char) + 1);
cou = _itoa(count, temp, 10);
char * m = "E://VS//PICTURE//";
char* c = (char*)malloc(strlen(m) + strlen(cou) + 1);
strcpy(c, m);
strcat(c, cou );
char * p = ".jpg";
char * filename = (char *)malloc(strlen(c) + strlen(p) + 1);
strcpy(filename, c);
strcat(filename, p);
cvSaveImage(filename, leftPic);
count++;
}
改成这样写了,可是为什么还是不可以,也是程序直接停止工作。。。。
#4
好了,谢谢您~~~