2 syxsyxx syxsyxx 于 2016.01.30 10:05 提问

在MFC的CDialog类中可以显示JPG图片 在CFromview类中用同样的方法显示不了

HGLOBAL hMem;
IStream *m_pStream;
IPicture *m_pPicture;
OLE_XSIZE_HIMETRIC m_JPGWidth;
OLE_XSIZE_HIMETRIC m_JPGHeight;

CRect rect(100,120,600,460);
CString path;
CFile file;
CFileDialog dlg(TRUE,_T("jpg"),_T("*.jpg"), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,   
    _T("JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif|bmp文件(*.bmp)|*.bmp|所有文件(*.*)|*.*|"),NULL);   
if(dlg.DoModal()==IDOK)   
{   
    path=dlg.GetPathName(); 
}  

file.Open(path,CFile::modeReadWrite);
DWORD len=file.GetLength();
hMem= GlobalAlloc(GMEM_MOVEABLE,len);
LPVOID pData=NULL;
pData=GlobalLock(hMem);
file.Read(pData,len);
file.Close();
GlobalUnlock(hMem);
CreateStreamOnHGlobal(hMem,TRUE,&m_pStream);
OleLoadPicture(m_pStream,len,TRUE,IID_IPicture,(LPVOID*)&m_pPicture);
m_pPicture->get_Height(&m_JPGHeight);
m_pPicture->get_Width(&m_JPGWidth);
CDC *pDC=NULL;  
pDC=this->GetDC();
m_pPicture->Render(pDC->m_hDC,0,0,(int)rect.Width(),(int)rect.Height(),0,m_JPGHeight,m_JPGWidth,-m_JPGHeight,NULL);

1个回答

caozhy
caozhy   Ds   Rxr 2016.01.31 07:41

CFromview会引发重绘,打开文件得到文件名存在一个变量,在OnDraw里绘图。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
CFormView和CView区别
建立一个"单文档"的工程中,用户视图的基类改为CView,在编程中就有了ondraw函数(成员函数),而在CFormView情况下就没有ondraw函数(成员函数),CFormView是CView类的派生类,在CFormView类里可以放很多控件,即“带有菜单并可以添加控件的工程”。    View必须和document一起工作,CView不能在资源编辑器中编辑,但是CFormView可以,一般
在CFormView或对话框中动态添加CScrollView、CFormView
 本代码可以在CFormView中,根据事先画好的控件位置创建CScrollView也可以在CDialog中创建CScrollView、CFormView等注:若以下代码放在CMainRightView::OnCreate(LPCREATESTRUCT lpCreateStruct)内,则GetDlgItem()函数将调用失败,因为此时控件都还未被创建!void CMainRi
创建MFC类,基类列表里找不到CDialogBar
创建基类为CDialogBar类与对话框关联,但是基类列表里找不到CDialogBar,解决如下: 先创建基于CDialog的派生类:打开ClassWizard,为以上创建的资源添加一个以CDialog为基类的派生类(因为ClassWizard没有将CDialogBar列在基类目录清单中,所以用户只能先以CDialog类派生)。 再修改派生类以CDialogBar为基类:手工修改几处代
MFC应用---利用CxImage显示图片
MFC应用---利用CxImage显示图片 1.简单介绍     用过MFC都应该知道,如果只用MFC自带的图片显示功能,只能显示BMP、PNG和Icon文件。 要显示JPG之类的图片变得很复杂。这里介绍一个库CxImage,利用这个库在MFC中显示各种类型的图片。 下面便是效果图。 2.具体实现 1.下载CxImage库 此处下载   2.将CxImage库引入项目,
使用GDI+和CImage类加载png图片
本文的方法可以加载bmp、jpg、png等多种格式的图片,但由于大多软件都使用可带透明色的png图片,所以以加载png图片为研究切入点,找到对应的加载办法。本文结合TrueLink代码的使用情况,分别讲述使用GDI+和CImage来加载png图片的方法,并对使用过程中的一些细节和问题进行了总结。
[MFC]CDialog类简介、创建模态对话框
1. CDialog类的基本使用方法:      1) 在创建自己的对话框之前必须先从CDialog类派生出自己的类,并在派生类中定义一些自己的数据域以及其它新的函数;      2) CDialog中继承来的最重要的三个函数都是消息响应函数:OnInitDialog、OnOK、OnCancel函数           i. OnInitDialog相应的WM_INITDIALOG消息,该函
MFC中的CDialog类
CDialog::CDialog  构造 CDialog 对象。 CDialog::Create  初始化 CDialog 对象。 创建无模式对话框并将它附加到 CDialog 对象。   CDialog::CreateIndirect  在内存(基于的不是资源从创建对话框模板的无模式对话框)。   CDialog::DoModal  调用模式对话框并返回,在执行。   CD
MFC学习笔记——CDialog(模态对话框及其弹出过程)
一.模态对话框和非模态对话框Windows对话框分为两类:模态对话框和非模态对话框。模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。二.模态对话框是怎样弹出的毕竟加法计算器程序大部分都是MFC自动生
绪:mfc利用橡皮筋类crectTracker选择图像roi区域显示模板图像
基于mfc环境,利用橡皮筋类crectTracker选择图像roi区域提取模板并显示模板图像。
MFC显示JPG图片
参考文章:http://blog.csdn.net/crearo/article/details/1328974 ----------------------------------------------------------------------------------------------- 效果截图: