MFC下,在MainFrame中如何调用C[name]View中的绘制函数?

feng0hua0 2009-03-27 04:06:58
MFC单文档下,在CTestView中实现OpenGL的绘制,向在CMainFrame中调用CTestView的绘制函数,请问如何实现?

]
COpenGLView* pView = (COpenGLView*)GetActiveView();
pView->myDraw();

这样貌似不行.
...全文
287 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cntest2677 2010-04-08
  • 打赏
  • 举报
回复
我在CMainFrame中使用:
COpenGLView* pView = (COpenGLView*)GetActiveView();
pView->myDraw();


编译的时候提醒我,COpenGLView未被定义,我包含这个头文件进去,编译,一样出错了。
moreslow 2009-03-28
  • 打赏
  • 举报
回复
如果可以的话能发下源码给我看看吗?具体调试看看~minwhy18@hotmail.com
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
可以编译通过,比如里面的语句是

void COpenGLView::myDraw()
{
AfxMessageBox("1");
...//绘制代码
AfxMessageBox("2");
}

在CMainFrame里调用myDraw()函数就可以弹出“1”和“2”,但是没有执行中间的绘制代码。。。很诡异啊。
hutu_cn 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 feng0hua0 的回复:]
To hutu_cn:
还是不行,和这个:
COpenGLView*pView=(COpenGLView*)GetActiveView();
pView->myDraw();
效果一样。
[/Quote]

沒看清是單文檔 :(

怎麼個不行?
不能編譯通過?
忘了插入 COpenGLView 的頭文件?

#include "OpenGLView.h"
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
To moreslow:

我就是这样做的,但是只能执行里面的别的函数,不能执行绘制函数。
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
To hutu_cn:
还是不行,和这个:

COpenGLView* pView = (COpenGLView*)GetActiveView();
pView->myDraw();

效果一样。
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复

COpenGLView* pView = (COpenGLView*)GetActiveView();
pView->myDraw();

效果一样。。。
hutu_cn 2009-03-27
  • 打赏
  • 举报
回复
CFrameWnd *pChildFrame = GetActiveFrame();

if((pChildFrame != NULL) && (pChildFrame->GetSafeHwnd() != GetSafeHwnd()))
{
COpenGLView *pView = (COpenGLView*)(pChildFrame->GetActiveView());
if (pView)
{
pView->myDraw();
}
}
moreslow 2009-03-27
  • 打赏
  • 举报
回复
那你可以直接在CView里实现啊。。按钮传个参数或者变量给它
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
我是想测试的时候方便点,在CMainFrame中添加一个按钮,按下的时候执行绘制函数。
moreslow 2009-03-27
  • 打赏
  • 举报
回复
你为什么要在CMainFrame中调用绘制函数?能说下具体目的吗?
我原来写的程序都是C[]View里实现绘制的。
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
...
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
在线刷新等啊...
feng0hua0 2009-03-27
  • 打赏
  • 举报
回复
在COpenGLView里是设置myDraw()为public的啊.

我如果吧myDraw()的内容这样写:

AfxMessageBox("1");
...//绘制代码
AfxMessageBox("2");

这样的话可以弹出1和2,也就是说myDraw被执行了,只是绘制的部分没有效果.
oyljerry 2009-03-27
  • 打赏
  • 举报
回复
myDraw 作为你的COpenGLView 的public 函数..

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧