mfc工具栏打开按钮打开了一幅图片,怎么显示到另一个对话框的picture控件上? 5

voidCMainFrame::OnOpenP1(){CFileDialogdlg(TRUE,_T("*.bmp"),NULL,OFN_FILEMUSTEXIST|OFN... void CMainFrame::OnOpenP1()
{
CFileDialog dlg(TRUE, _T("*.bmp"), NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,_T("image files (*.bmp; *.jpg; *.tif; *.jpeg) |*.bmp; *.jpg; *.tif; *.jpeg | All Files (*.*) |*.*||"), NULL);
// 打开文件对话框的标题名
dlg.m_ofn.lpstrTitle = _T("Open Image");
// 判断是否获得图片
if( dlg.DoModal() != IDOK )
return;
// 获取图片路径
CString mPath = dlg.GetPathName();
// 读取图片、缓存到一个局部变量 ipl 中
ipl = cvLoadImage( mPath, 1);

// 判断是否成功读取图片
if( !ipl )
return;
CPaneDlg panedlg;
// 调用显示图片函数
panedlg.DrawPicToHDC(ipl, IDC_picture1);
}
展开
 我来答
百度网友bab7c74
2013-10-25 · TA获得超过126个赞
知道答主
回答量:125
采纳率:100%
帮助的人:112万
展开全部
你的代码使用openCV做的吧,检查下你的IDC_picture1是不是包含在CMainFrame
这个类中,如果没有,是没有办法把消息传递给你要显示图片的控件的,这种情况你根据你对话框的名字显示到对话框时OpenCV库里边有现成的函数可以调用,具体是什么我也记不太清楚了,我现在不做VC,只是以前用过。
再说下,MFC中picture控件只能显示256色图片,如果你想要显示16W色或者更高的,需要你自己画,Windows的API函数提供了的,效率也非常高
追问
我用的就是那个函数DrawPicToHDC(IplImage* img, UINT ID),在CMainFrame中怎么加载IDC_picture1?
追答
没有办法,只能你自己再封装下DrawPicToHDC这个函数,你的错误很明显的,你在CMainFrame这个类中运行程序,但对话框的类是CPaneDlg,而IDC_picture1是CPaneDlg所私有的不会共享的东西,你在CMainFrame中使用,所以CMainFram只认得这个IDC_picture1是一个数字,但是它并不知道它在哪,是个什么东西,因此我觉得你可以设置一个全局变量,在对话框的初始化函数中将图片的路径传递进来,直接显示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2013-10-25 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4231万
展开全部

如果ipl是CMainFrame成员变量,那么,在另一个对话框中:

((CMainFrame *)AfxGetMainWnd())->ipl

就可以得到这个变量并进行显示了

更多追问追答
追问
我只是调用了对话框里的一个函数,那你说的这句话我该添加到具体哪个地方?
追答
这就是一个变量的访问,对话框函数直接这么用。
注意包含头文件#include mainfrm.h
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式