
CTest2View pTempDlg;
pTempDlgOnStart();
或者
CTest2View pTempDlg = new CTest2View ();
pTempDlg->OnStart();
首先从对话框的按钮处理函数中获得mainframe指针
cmainframe
pmain=(cmaimframe
)afxgetapp()->m_pmainwnd;
然后获得相应视图指针cyourview
pview=(cyourview
)pmain->getactiveview();
最后获得视图对应的当前文档指针
cdocument
pcurrentdoc
=(cframewnd
)m_pmainwnd->getactivedocument();
以上需要注意在对话框类中包含mainfrmh和相应的视图类的头文件
单文档应用程序:单文档界面(SDI)应用程序
多文档应用程序:多文档界面 (MDI) 应用程序
区别:
1、窗口数量不同
单文档界面(SDI)应用程序:只有一个窗口
多文档界面 (MDI) 应用程序:有多个子窗口
2、同时处理多个窗体的方式不同
单文档界面(SDI)应用程序:不能同时处理多个窗体,要想同时处理多个窗体,需要打开应用程序的多个副本。需要不断的实例化多个Form,然后通过show()方法打开。
多文档界面 (MDI) 应用程序:可以同时显示多个文档,每个文档显示在各自的窗口中,MDI 应用程序中常有包含子菜单的“窗口”菜单项,用于在窗口或文档之间进行切换。
扩展资料
1、创建MDI父窗体
MDI 父窗体是包含 MDI 子窗口的窗体,子窗口是用户与 MDI 应用程序进行交互的副窗口,要将窗体指定为子窗口的 MDI 容器只需将窗体的IsMDIContainer 属性设置为 True,建议将 WindowState 属性设置为 Maximized,因为当父窗体最大化时 *** 作 MDI 子窗口最为容易。MDI 父窗体的边缘将采用系统颜色。
2、创建MDI子窗体
多文档界面 (MDI) 应用程序的基本元素是MDI 子窗体,因为它们是用户交互的中心。
例如:创建子窗体的代码如下:
FormnewMDIChild = new Form();
// 设置该窗体的父窗体
newMDIChildMdiParent= this;
// 显示新建窗体
newMDIChildShow();
参考资料:
MFC框架下,你将文档类作为APP的成员或者extern引用是错误的,这样不能正确获取类运行实例。
在View视图类,直接GetDocument()即可获取文档类指针。
在其它任意框架内代码中:
AfxGetMainWnd()->GetActiveView()->GetDocument();//获取文档类指针工作着线程的执行函数要么是全局的要么是静态的
你的函数是那个?(如果是静态的当然会冲突)
不过不管是哪个,都最好不要用AfxGetApp来获取指针
应该往线程里传参。
想要CXXXDoc的指针或其它东西的话
建立一个结构体
把想要的东西放到结构体中
然后把结构体指针强制转成LPVOID传入
在线程函数里把指针转回来就可以了
在文档类中只要使用(多文档的,单文档的更简单一点儿)
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
以上就是关于MFC 单文档 对话框如何获得视图指针全部的内容,包括:MFC 单文档 对话框如何获得视图指针、MFC如何在对话框中点击按钮打开单文档、单文档与多文档应用程序有何区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)