logo资料库

如何在对话框类内调用视图cview类中的函数和变量.doc

第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
资料共31页,剩余部分请下载后查看
VC6.0中如何在对话框中如何获得View类指针
在对话框中创设Formview后,不进入OnInitialUpdate
MFC对话框 添加视图怎么获取句柄
MFC中各种指针的获取
VC获取给类指针
在文档类中调用视类函数
如何在对话框类内调用视图 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 句柄 不对! ------解决方案--------------------------------------------------------
分享到:
收藏