如何在对话框类内调用视图 cview 类中的函数和变量
(取自百度整理汇集)
SDI 程序 Dialog 类中调用 View 中方法或修改 View 中的变量
CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();
CXXView* pView = (CXXView*)pMain->GetActiveView();
CXXDoc* pDoc = (CXXDoc*)pMain->GetActiveDocument();
在 Dialog 类中这样写会出现 CXXView Undeclare identifier
如果把 CXXView.h 包含进来就会 syntax error : missing ';' before '*'
指示为 View 类中这行有问题 CXXDoc* GetDocument();
高手指点一下
*****
*****打开新 Dialog 类的头文件,在
#include "CXXView.h" 这句之前,再加一句
#include "CXXDoc.h",记住是“之前”!
*****
*****有问题的话再反馈。
非常有效谢谢
求救 VC SDI 中如何在对话框类中调用 view 类方法
比如,点击视图上的按钮后弹出一个对话框,点击对话框中的一个按钮后改变视图中一个控件
的文本
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();
CT2View* pView =(CT2View*) pMain->GetActiveView();
CT2Doc* pDoc = (CT2Doc*)pMain->GetActiveDocumen();
VC6.0 中如何在对话框中如何获得 View 类指针
vc 中如何在其他类,或者对话框中获得 View 类指针,进而获得客户区 CDC,这是在做图形处
理中常遇到的问题。下面将列出一个很简单的方法,获得相应的指针
假定项目名为 FDSFrame,则代码如下。
CMainFrame* pFrame = (CMainFrame *)AfxGetMainWnd();
CChildFrame *pChildFrame = (CChildFrame *)pFrame->GetActiveFrame();
CFDSFrameView*pView = (CFDSFrameView *)pChildFrame->GetActiveView();
CDC *pDC = pView->GetDC();
SDI 探索中:获得 Mainframe 和 view 的指针
CFrameWnd *pFrame=(CFrameWnd*)AfxGetApp()->m_pMainWnd;
CMyView* pView=(CMy0View*)pFrame->GetActiveView();
其中(CMy0View*)一定要加上,不然 GetActiveView()只返回 CView 的指针了!
对话框程序中调用单文档视图的显示与交互
我在对话框程序中加入了三个单文档视图的文件用于调用,分别是 MainFrm.h htmlExDoc.h htmlExView.h
在对话框(CExamPaperToolDlg)中双击按钮后弹出视图,由于弹出的是非模态的,若不关闭视图再次点击按
钮时则会出错
CSingleDocTemplate*
pDocTemplate
在 OnInitDialog 中初始化
C/C++ code
?
1
2
3
4
5
6
7
8
if (!pDocTemplate)
return;
pDocTemplate;
=
new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(ChtmlExDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(ChtmlExView));
//
main
SDI
frame
window
AfxGetApp()->AddDocTemplate(pDocTemplate);
9
10
11
在按钮按下时调用:
C/C++ code
?
1
2
3
4
5
6
7
8
9
1
0
update
it
//
The
CCommandLineInfo
cmdInfo;
AfxGetApp()->ParseCommandLine(cmdInfo);
if (!AfxGetApp()->ProcessShellCommand(cmdInfo))
return;
one
and
only
window
has
been
initialized,
so
show
and
//AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
//AfxGetApp()->m_pMainWnd->UpdateWindow();
请问怎么解决视图未关闭再次点击出错的问题?可以将视图弹出的方式变成模态的么
另外请问怎么调用视图类 ChtmlExView 中的方法?
OK 了 我解决了
在 sdi 的 view 初始化的时候将 view 指针传递给主对话框,感谢大家的热心帮助
VC 中如何使整个视图区填满一副位图呢??
BOOL CGraphicView::OnEraseBkgnd(CDC* pDC)
{
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CDC dccom;
dccom.CreateCompatibleDC(pDC);
dccom.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dccom,0,0,bmp.bmWidth,bmp.bmHeight,
SRCCOPY);
return 1;
}
在一个对话框类里面,如何调用 FormView 中的 OnUpdate 函数
在一个对话框类里面,怎么调用 FormView 中的 OnUpdate 函数啊?
还是用 SendMessage 啊?谁有这样的例子分享一下啊!!
------解决方案--------------------------------------------------------
把 formview 类的指针赋给对话框就行了,就是这么做:
假设是在 FormView 类里弹出对话框,那么在视类的弹出对话框函数里:
dialog1(自己定义的对话框类名) dd;
dd.m_FormView=this;
dd.DoModal();
在对话框头文件里:
form(你的视类全名) *m_FormView;
这样在对话框 CPP 文件里就可调用视类任何 PUBLIC 的函数和变量了,同样包括 OnUpdate,就是这样:
m_FormView->OnUpdate();
在对话框中创设 Formview 后,不进入 OnInitialUpdate
在对话框中创建 Formview 后,不进入 OnInitialUpdate
我在 CSDN 资源下可编辑的 CListCtrl
http://download.csdn.net/detail/gelu1231/856142
VC++写的功能非常强大的自定义列表控件(排序、背景、树状伸缩、在线编辑)源代码
他把这个 CListCtrl 同 FormView 结合起来实现的,就是 CGfxListCtrl+CSuperGrid1View。
源代码在 CSuperGrid1View::OnInitialUpdate()中创建 CGfxListCtrl 的列表项。
因为源代码是结合框架使用的,框架创建 CSuperGrid1View 后会调用 OnInitialUpdate。
我在自己的代码中,把 CSuperGrid1View 创建到一个对话框 Mydialog 中。
而我创建到对话框后,View 相应区域是白色,没有列表项。在 OnInitialUpdate 下断点发现没有进入。
需要如何处理才能使之执行。
我要在对话框中获得视图类的指针。 可在对话框中无法包含视图类的头文件。这样编译会出错。
顺序问题,包含文件的顺序很重要,要看你其它的包含都有什么。另外,可以这样:
AfxGetMainWnd()->GetActiveView();
如果不需要使用自定义的东西,就不用强制转换为 xxview,直接用。
追问
头文件:
#include "MainFrm.h"
#include "MyDoc.h"
#include "MyView.h"
定义的视图类的指针。cmyview*
编译没定义。
CMainFrame *pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CMyView *pView=(CMyView*)pMain->GetActiveView();
这是什么问题
你不写全了没法看。。。给你个建议吧,看 view 类里面包含顺序怎么写,这里就怎么写。
看 view 类里面包含顺序怎么写,这里就怎么写
谢谢提醒,类试图下看东西的确有问题。
如何在对话框类内调用视图 cview 类中的函数和变量
你如果是想要从弹出对话框中访问主视的话可以这样来:
首先得到主窗口对象指针:AfxGetApp()->m_pMainWnd 或 AfxGetApp()->AfxGetMainWnd();
然后用这个主窗口对象指针来得到视的对象指针:单文档:CFrameWnd::GetActiveView( )。
这个是基于单文档的,多文档的大致差不多,不过要先获得活动窗口而已 CFrame::GetactiveFrame()
我在对话框类内编入了以下代码:
CFrameWnd *pFram=AfxGetApp()->m_pMainWnd;
CSmDataView *pView=(CSmDataView)pFram:
显示没有语法错误,但是当执行到调用该对象内的成员函数时,出现异常,好象与 CView 中的 Getcount()
函数有关,是怎么回事啊!
我要调用的函数内有调用文档 CSmDataDoc 类的对象和函数!
对话框如何引用视类成员函数
我创建了一个对话框,并将这个对话框停靠在窗口视图的右边方便操作,我想引用视类的成员函数,通过
网上介绍的一些方法:m_pView = (CTView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView();获取视
类对象,然后在引用成员函数,发现编译没错误,但点击对话框上控件时是出现应用程序错误的对话框,
当注释引用的视类成员函数时,不会出现错误,想想问问各位大侠,究竟是什么原因啊,应该怎么处理?
对话框错误提示:0x00416d9c 指令引用 0X00000394 内存,该内存不能 written
我在一个按钮控件的响应中加了:
m_pView = (CTView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView();
m_pView->m_pDIB=NULL;
m_pView 为在对话框类增加的视类对象
到底该怎么办啊?
如何在对话框类中调用视图类中的函数
第一:在对话框的源文件中加入两个头文件:
MyDoc.h 和 MyView.h,一定记住是 Doc 的头文件在前面;
第二:然后加入 CMyView *pMyView;
第三:然后就可以调用 pMyView->。。。的函数了;;;
多文档视图中,对话框类调用文档类函数
多文档视图中。假设文档类 CMyDoc 中定义了一个 public 成员变量 number。我在菜单栏里加入了一个调用
非模式对话框的函数调用 CMyDlg.现在我想在这个对话框中调用文档类里面的成员函数。请问该如何实现
呢!!?
可以采取下面的办法:
CFrameWnd *pWnd = (CFrameWnd *)AfxGetMainWnd();
CView *pView = pWnd->GetActiveView();
CImageDoc *pDoc = (CImageDoc *)pView->GetDocument();
这 样 就 获 取 了 指 向 文 档 类 的 指 针 , 可 以 操 作 文 档 了 。 因 为 在 视 图 类 的 头 文 件 中 有 这 样 一 句 话
CImageDoc* GetDocument();所以需要获取 pview 指针,即指向视类的指针,要想或者指向视类的指针就
需要窗口类指针。
方法 2:
CFrameWnd *pWnd =(CFrameWnd *)AfxGetMainWnd();
CImageDoc *pDoc=(CImageDoc *)pWnd->GetActiveDocument();就这两行可以实现上面的功能。
一种 MDI 和 SDI 通用的办法:
CFrameWnd* pMainFrame=(CFrameWnd*)AfxGetMainWnd();
CFrameWnd* pActiveFrame=pMainFrame->GetActiveFrame();
CDocument* pActiveDocument=pActiveFrame->GetActiveDocument();
if(pActiveDocument)
{
………………
}
对话框类获取视图类指针问题
我使用如下方法:
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CMyIEView *m_pView = (CMyIEView*)pFrame->GetActiveView();
and
settings\administrator\
但加入#include "MyIEView.h"后有三个错误
c:\documents
桌
myie\myieview.h(21) : error C2143: syntax error : missing ';' before '*'
c:\documents
桌
myie\myieview.h(21) : error C2501: 'CMyIEDoc' : missing storage-class or type specifiers
c:\documents
\
myie\myieview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers
settings\administrator\
settings\administrator\
and
and
\
\
面
面
面
桌
最
最
最
新
新
新
即其 CMyIEDoc* GetDocument()有错误
请问怎样解决?
答:
仔细查查是不是有重复#include 的地方,我以前也遇到过,再编译一次有时就没错了,但我现在忘了当时是怎
么解决的,困惑?
CMDIFrameWnd
(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
*pFrame
=
Get
//
the
CMDIChildWnd
active
*pChild
MDI
child
window.
=
(CMDIChildWnd
*)
pFrame->GetActiveFrame();
//
or
CMDIChildWnd
*pChild
=
pFrame->MDIGetActive();
active
view
attached
to
the
active
MDI
child
*pView
=
(CMyView
*)
pChild->GetActiveView();
the
Get
window.
//
//
CMyView
#include "MyIEDoc.h"
#include "MyIEView.h"
注意顺序,或者前置声明。
#include "MyIEDoc.h"
#include "MyIEView.h"
或者加一句 class CMyIEDoc;
SDI 单文档工程中怎样通过对话框获取文档指针
CMainFrame *pFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);
C**Doc *pDoc = (C**Doc*)(pFrame->GetActiveDocument());
楼上正解,记得添加 mainframe 和 view 的头文件
也可以用 AfxGetMainWnd()->GetActiveView()->GetDocument();
#include "MainFrm.h"
你的文档类 CYourDoc
CYourDoc *pDoc = (CYourDoc*)(((CMainFrame*)(AfxGetMainWnd())->GetActiveView()->GetDocument();
2 楼 正解 注意头文件包含就是了
MFC 对话框 添加视图怎么获取句柄
MFC 对话框 添加视图如何获取句柄!
我在对话框中按如下方式添加了一个从 CVIEW 继承的视图类
m_imageView = new CimageView();
//ASSERT(m_pView1 != NULL);
if (!(m_imageView)->Create(NULL, NULL, WS_CHILD,
CRect(rect.left+25,rect.top,rect.right,rect.bottom), this, NULL, NULL))
{
AfxMessageBox(_T("Create view1 failed"));
return TRUE;
}
m_imageView->ShowWindow(SW_SHOW);
m_imageView->OnInitialUpdate();
现在要想改类发送消息
但 m_imageView->m_hWnd 句柄 不对!
------解决方案--------------------------------------------------------