社区
ATL
帖子详情
各位高手请指点一下,控件事件传出图片的问题
huazaimh
2009-12-31 09:00:54
现在有一个控件,我想通过事件把图片作为参数传出去,可是不管如何实验,都有问题
事件的原型,void OutBayEvent(BSTR Pic, long lPicLen, BSTR szEventInfo);
不管我如何来传,感觉数据是传出去了,可是在处理的时候,收到的数据老是不对
我在应用程序写文件的时候,里面的数据不对,写的文件也不能显示
请各位高手,指点一下,急!急!急!
另外:分不够可以另开贴给分,只要能解决问题!
...全文
94
6
打赏
收藏
各位高手请指点一下,控件事件传出图片的问题
现在有一个控件,我想通过事件把图片作为参数传出去,可是不管如何实验,都有问题 事件的原型,void OutBayEvent(BSTR Pic, long lPicLen, BSTR szEventInfo); 不管我如何来传,感觉数据是传出去了,可是在处理的时候,收到的数据老是不对 我在应用程序写文件的时候,里面的数据不对,写的文件也不能显示 请各位高手,指点一下,急!急!急! 另外:分不够可以另开贴给分,只要能解决问题!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huazaimh
2009-12-31
打赏
举报
回复
在控件中,没有图片类型,不知道是不是我选的数据类型有问题
因为涉及到转换
这个是控件外的调用程序里面的代码:
void CTestRVDlg::OnTEventCamrvctrl1(BSTR FAR* Pic, long lPicLength)
{
CString strPic(*Pic);
BYTE *p = new BYTE[lPicLength];
memcpy(p,strPic.GetBuffer(0),strPic.GetLength());
CFile PicFile;
if(PicFile.Open("Test.jpg",CFile::modeCreate|CFile::modeWrite))
{
PicFile.Write(p,lPicLength);
PicFile.Close();
}
}
void CTestRVDlg::OnButton1()
{
m_ctrlRV.AddDev("");
}
void CTestRVDlg::OnOutBayEventCamrvctrl1(LPCTSTR Pic, long lPicLen, LPCTSTR szEventInfo)
{
char *str = new char[lPicLen];
wsprintfA(str, "%S ",Pic);
CFile PicFile;
if(PicFile.Open("TestX.jpg",CFile::modeCreate|CFile::modeWrite))
{
PicFile.Write(str,lPicLen);
PicFile.Close();
}
}
下面这一段是控件里面的代码(传出部分):
char tmpbuf[200];
sprintf(tmpbuf,"%s",szCameraIP);
adddev(inet_addr(tmpbuf),512,680,150);//可以增加多个IP地址
ResetDll(this->m_hWnd);
CFile PictureFile;
CFileException e;
if(PictureFile.Open("ITS31.jpg",CFile::modeRead|CFile::typeBinary,&e))
{
long lPicLen = PictureFile.GetLength();
char *Pic = new char[lPicLen];
memset(Pic,0,lPicLen);
if(PictureFile.Read(Pic,lPicLen)<=0)
AfxMessageBox("Read Pic File ERR!");
FireOutBayEvent(LPCTSTR(Pic),lPicLen,"图片文件");
// CComBSTR str(Pic);
BSTR bstrTmp;
//char str[]="ABCDE";
bstrTmp = _com_util::ConvertStringToBSTR(Pic);
FireTEvent(&bstrTmp,lPicLen);
delete Pic;
}
实际中的应用不是这样的,这个是我为了测试来做一个事件,请各位指点一下!谢谢!
oyljerry
2009-12-31
打赏
举报
回复
FireOutBayEvent的Pic中存放图片地址,传递过去
huazaimh
2009-12-31
打赏
举报
回复
可是事件中,没有一个void类型
事件的原型啊,
void FireOutBayEvent(LPCTSTR Pic, long lPicLen, LPCTSTR szEventInfo)
{FireEvent(eventidOutBayEvent,EVENT_PARAM(VTS_BSTR VTS_I4 VTS_BSTR), Pic, lPicLen, szEventInfo);}
我的QQ:44190484,请各位高手指导一下,谢谢!
yxwsbobo
2009-12-31
打赏
举报
回复
最简单弄全局变量。。
OutBayEvent是什么函数的原型? 相应事件的原型好像不是这样
可以只传一个VOID 类型的地址,然后在这个地址中转换为存放图片的地址,WINDOWS自己很多也是这样做的
oyljerry
2009-12-31
打赏
举报
回复
[Quote=引用 5 楼 huazaimh 的回复:]
已经解决,用VARIANT类型
void OutBayEvent(VARIANT varPic, long lPicLen, BSTR szBayInfo);
具体的实现如下:
VARIANT varPic;
varPic.pbVal = new BYTE[pinfo.piclen];
memset(varPic.pbVal,0,pinfo.piclen);
memcpy(varPic.pbVal,pinfo.pic,pinfo.piclen);
FireOutBayEvent(varPic,pinfo.piclen,strMsg);
[/Quote]
varPic.pbVal = new BYTE[pinfo.piclen];
记得用完了,delete释放
huazaimh
2009-12-31
打赏
举报
回复
已经解决,用VARIANT类型
void OutBayEvent(VARIANT varPic, long lPicLen, BSTR szBayInfo);
具体的实现如下:
VARIANT varPic;
varPic.pbVal = new BYTE[pinfo.piclen];
memset(varPic.pbVal,0,pinfo.piclen);
memcpy(varPic.pbVal,pinfo.pic,pinfo.piclen);
FireOutBayEvent(varPic,pinfo.piclen,strMsg);
利用MFC的Picture
控件
显示图像和视频/摄像头画面(VS2008+OpenCV2.0)
利用MFC的Picture
控件
显示和处理图像,后面又添加了播放视频和捕获摄像头画面的功能,其中播放视频的功能只有 'Play' 和 'Stop',不能实现暂停
winform模仿QQ聊天窗口皮肤
控件
CSharp winform 模仿QQ聊天窗口皮肤
控件
android日历
控件
这是一个日历
控件
,里面提供能的功能很完善了,可以设置字体颜色,选中的背景色,设置事务。点击左右翻页等
VS2010/2008/2005 MSCOMM串口
控件
VS2010MFC没有串口
控件
,此压缩包里包含了串口
控件
相关的3个文件。mscomm32.ocx MSCOMM32.oca MSCOMM32.DEP MSCOMM.SRG 将这几个文件拷贝到一个固定的目录下然后注册就可以在MFC里正常使用串口
控件
了。 注册:开始->运行 输入Regsvr32 "C:\WINDOWS\system32\MSCOMM32.OCX" 根据自己文件的存放目录修改就OK了
WdatePicker 非常实用的时间js
控件
+demo
WdatePicker 非常实用的时间js
控件
+demo WdatePicker 非常实用的时间js
控件
+demo WdatePicker 非常实用的时间js
控件
+demo
ATL
3,248
社区成员
48,531
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章