MFC用OnFileOpen打开图片后不马上调用onDraw函数刷新,只有改变窗口后才刷新看到图片显示,为什么?高分

在MFC用菜单资源添加事件处理程序CxxxxDoc::OnFileOpen()打开图片,不马上调用onDraw函数刷新,移动窗口后才能看到图片显示。怎么才能调用Cxxxx... 在MFC用菜单资源添加事件处理程序CxxxxDoc::OnFileOpen()打开图片,不马上调用onDraw函数刷新,移动窗口后才能看到图片显示。怎么才能调用CxxxxView::OnDraw()函数,选择打开对话框后立即显示图片。
利用菜单资源添加事件处理程序CxxxxDoc::OnFileOpen()
代码如下
void CImagePCBDoc::OnFileOpen()
{

CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrFilter=LPCTSTR(_T("JPEG(*.jpg)\0*.jpg\0BMP(*.bmp)\0*.bmp\0PNG(*.png)\0*.png\0ImagePCB Files(*.ipcb)\0*.ipcb\0Protel 99SE Files(*.pcb)\0*.pcb\0All Files(*.*)\0*.*\0\0"));
//定义打开对话框的标题
fileDlg.m_ofn.lpstrTitle=LPCTSTR(_T("打开文件"));
char szchar[20];
memset(szchar,0,20);
if (fileDlg.DoModal()==IDOK)
{
if (m_dib.Read(fileDlg.m_ofn.lpstrFile) == TRUE)
{
SetModifiedFlag(FALSE); // start off with unmodified
// 添加刷新程序
File.close();
}
}
}
我用一下几种方法都不行
第一种,在“添加刷新程序”处添加
((CImagePCBView*)((CMainFrame*)AfxGetMainWnd())-> GetActiveView())->Invalidate();
第二种,在“添加刷新程序”处添加
UpdateAllViews(NULL);
第三种,在“添加刷新程序”处添加
OnOpenDocument(fileDlg.m_ofn.lpstrFile);
其余的代码也写上供参考
void CxxxxView::OnDraw(CDC* pDC)
{
// 获取文档类指针
CImagePCBDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//返回m_dib的指针
ImageProcessing *pDib=pDoc->GetPDib();

//获取DIB的尺寸
CSize sizeFileDib = pDib->GetDimensions();

//显示DIB
pDib->Draw(pDC, CPoint(0, 0), sizeFileDib);
}
doc头文件
。。。。。
// 实现
public:
virtual ~CImagePCBDoc();
//返回m_dib的指针
ImageProcessing *GetPDib()
{
return &m_dib;
}
。。。。。

private:

//mageProcessing类的对象
ImageProcessing m_dib;
。。。。。
CImageProcessing类是一个标准图像处理类。
如果能调试过去再加100分
我可以将源代码发过去然后帮我调试,或其他方式。 VS2010的程序。
我的问题解决了,是新建立一个项目运行通过了、加的是“UpdateAllViews(NULL);”为什么
展开
 我来答
qyb8013
2010-11-08
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
我想是项目本身出毛病了,有一些编译需要的文件没有添加过来。打开菜单项目、重新扫描解决方案,编译然后可以再试试,不行重装软件。
chanxia123
2010-11-04
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
手动刷新一下,用Invalidate(FALSE);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星夜落尘
2010-10-30 · TA获得超过594个赞
知道小有建树答主
回答量:466
采纳率:0%
帮助的人:356万
展开全部
在view中的oncreate函数中添加图片显示的代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cr4315
2010-10-30 · 超过23用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:46.1万
展开全部
在OnDraw里面绘图试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式