MFC 单文档 对话框如何获得视图指针

MFC 单文档 对话框如何获得视图指针,第1张

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();

参考资料:

百度百科 - MDI

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如何在对话框中点击按钮打开单文档、单文档与多文档应用程序有何区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9800348.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存