MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中获得视类(CMyView
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MFC如何在文档(CXXXDoc)类或框架(CMainFrame)类中
获得视类(CMyView
在文档类中只要使用(多文档的,单文档的更简单一点儿) POSITION pos=this->GetFirstViewPosition();//要写在文档类中,在其他类中把this换成文档指针就可以了
while(pos)
{
CView *pView=this->GetNextView(pos);
}
而在框架类中只要选取得文档对象,然后再使用上面的代码
以下是从一个对象得到另一个对象有方面(摘自MFC深入浅出)
从一个对象得到另一个对象的方法
本对象要得到的对象使用的成员函数CDocument对象视列表
GetFirstViewPosition,GetNextView
文档模板GetDocTemplate
CView 对象文档对象GetDocument
边框窗口GetParentFrame
CMDIChildWnd或
CFrameWnd 对象活动视GetActiveView
活动视的文档GetActiveDocument CMDIFrameWnd对象活动文档边框窗口MDIGetActive
在框架类中使用GetActiveView();
在文档类中
(CMainFrame*)(AfxGetApp()->m_pMainWnd))->GetActiveView();
MFC中怎么在CMainFrame下获得View类的指针
使用GetActiveView()函数
MFC中普通类如何获取view类的指针?
在普通类(Generic class)中怎么得到view类的指针?我试过这样: CMainFrame *p=(CMainFrame*)AfxGetMainWnd();
CView *pv=p->GetActiveView();
按照你的用法应该就是可以的!
是不是在这样用时,View还没有创建完成啊,所以pv才是空的。CMainFrame *m_pfm = (CMainFrame*)AfxGetApp()->m_pMainWnd;
...*m_pView = (...*)m_pfm->GetActiveView();
少一句:AfxGetApp()
CMainFrame *p=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CView *pv = (CView*)p->GetActiveView();
楼上的分析在理,楼主理一下函数调用顺序, 别是什么PreCreateWindow或是CXXXApp,CXXXFrame的构造函数,InitInstance 里,模板主窗口都没建完就准备操纵这个CView了
asdfasdf
怎样在MFC中返回类的指针,比如cwin,view类等等!
在CView类中,调用this->GetDocument()得到doc。
在CDocument类中,调用GetFirstViewPosition()和GetNextView()得到所有的view。
在其它类中,一种方法先是把指针传进去,以备调用的时候使用。另外就要用AfxGetApp()得到CWinApp,然后再用GetFirstDocTemplatePosition()和GetNextDocTemplate()得到doc template,然后调用GetFirstDocPosition()和GetNextDoc()得到doc。
如何在OnDraw函数或***Dlg函数中获得View类的指针(this)或整个对话框的指针?
在单文档中你可以采用如下方法:
现在要获得指针的文件开始处包含两个文件:
视图的主框架类头文件,即#include "MainFrm.h"
视图类头文件,即#include "XXView.h"
然后在要访问m_pSet处添加如下语句
CMainFrame* frm=(CMainFrame*)AfxGetApp()->m_pMainWnd; CXXView* pView=(CXXView*)frm->GetActiveView();
pView即View类指针
不过你用this不是更简单吗?
mfc的单文档中从一个视图的treeview类中获取Ctestview产生的视图窗口句柄?
获取单文档框架中的那个视图的窗口句柄。求一段代码。网上查了一下,没弄出来。哪位兄弟有时间写一段。
你说的不明不白的。方法可谓多矣。
可以通过全局对象theApp获得视图指针,然后
视图指针->GetSafeHwnd();获得句柄。
还可以发送自定义消息把句柄发送到指定窗口类。
还可以在你的stdafx.h中定义一个Cview指针,在程序初始化过程使之指向View类,在你的treeview中使用。
还可以自己为treeview类定义方法接收句柄,在调用的时候传入。注意处理好创建顺序问题,否则debug下会出断言错误。
方法真的很多。
如果你没有用到文档/视图结构,单文档是在创框架窗口中创建的。有一个变量m_wndView。这个就是那个句柄了。他是CWnd派生的。
如果你用到了文档/视图结构,直接GetActiveView就可以。
还有一种情况,如果你用了切分窗口。。。。。。。
忘了哪个函数了。Get***Pane好像。。查一下便知。
mfc单文档Ctestview产生的视图窗口初始标题如何获取?
你可以在资源文件里修改字符窜,具体怎么修改上网查,
另外一个方法是在view类的PreCreateWindow函数里return之前加入