嗯,在学孙鑫的MFC教程.....看到第七章对话框的时候想到的问题......情况是:
我创建一个SDI,然后对菜单进行响应,单击菜单出现对话框,对话框已经绑定了一个自定义的Ctestdlg类,创建了一个编辑框控件。
我的目的是用户在编辑框输入的数据在“确定”后,被我在获取,接着能对view类的成员变量进行更改,所以想问一下怎么在对话框内获得view对象或者指针,进而能对其变量进行修改
百度到其中一个解决方案是:
CMyView *pView=(CMyView *)((CMainFrame *)AfxGetMainWnd())->GetActiveView();
因为不知道GetActiveView()用法,所以我不知道这个语句在SDI是否适用....
谢谢帮忙~~~
这两种方法本质是和我百度到的是同一种方法吧......关于这种方法我有两个疑问:
第一, (CMainFrame*)AfxGetApp()->GetMainWnd中将指针强制转换,我想问一下为什么这样强制转换?
第二,GetActiveView()是“获得指向活动视图的指针”,这句话什么意思,视图还有分活动和非活动吗?在SDI中可以用这个函数吗?
第一个疑问,因为你需要调用的是CMainFrame类的成员函数GetMainWnd,所以要强制转换。
第二个疑问,就是GetActiveView()是"A pointer to the current or active CView",其实如果是多文档编程的话,就会有不止一个View,当前获得焦点的View就是活动的。就是MDI模式。
如果是创建模态对话框,Ctestdlg类的对象不作为局部变量,就不能通过重载构造函数的方式在view类的菜单响应函数传入view对象指针了......不过实际上影响也不大,可以自定义一个Ctestdlg类函数在view类的菜单响应函数里传递view对象指针....
这个方法理论上的确可行,没想到可以用传递指针的方式,非常非常感谢你的回答↖(^ω^)↗~~~不过还是等下面那个回答人的答出我的追问后才能确认哪个答案是满意回答....
MFC 怎么在对话框类中访问view类成员
第一种:CMainFrame *pFrameWnd = (CMainFrame*)AfxGetApp()->GetMainWnd;pFrameWnd->GetActiveView();第二种是利用全局变量the App,在CMyAPP这个类里有一个申明的全局变量。:theApp.GetMainWnd()->GetActiveView();
怎么把view加载到对话框中去
1.向工程中添加一个MFC视图类:CMyView,派生自CView;2.在对话框类CxxxDlg上定义一个视图类指针作为其类成员CMyView *m_pView;(记着包含CMyView.h);3.为了使得View视图创建在指定的区域,在对话框上放一个静态文本控件,资源ID手动改为IDC_STATIC_VIEW;4.在对话框的OnInitDialog函数里添加如下...
如何在OnDraw函数或***Dlg函数中获得View类的指针或整个对话框的指针...
在单文档中你可以采用如下方法:现在要获得指针的文件开始处包含两个文件:视图的主框架类头文件,即#include "MainFrm.h"视图类头文件,即#include "XXView.h"然后在要访问m_pSet处添加如下语句 CMainFrame* frm=(CMainFrame*)AfxGetApp()->m_pMainWnd;CXXView* pView=(CXXView*)frm->GetActiveView(...
MFC单文档应用程序中,怎样在视图类中关联对话框?
很简单啦,你要关联对话框,其实就是关联对话框的类,要把对话框的类关联到视图文件中,比如,先把#include "C...dlg.h"\/\/对话框类的头文件加在视图cpp文件开始处,然后再视图文件的某个事件函数中:C...dlg dlg;\/\/声明一个对象,用来操作该对话框 dlg.DoModal();\/\/要看到对话框,就要用Do...
MFC 如何将一个对话框嵌入到视图中
1、资源管理器中编辑要的对话框资源\/属性设为child。2、建立对话框类 3、在视中添加定义的对话框类为成员变量:m_YourDlg.4、在视图的OnCreate中:m_YourDlg.Create(IDD_YourDLG,this);\/\/设置显示位置和方式 m_YourDlg.setWindowPos(...);
MFC问题,如果我一个对话框的要访问另外一个对话框的成员变量,应该怎么...
假设有2个对话框A、B,对应的类为:CADlg、CBDlg 对话框A想访问对话框B的成员变量m_bData,那么m_bData就必须声明为public类型,然后在CADlg里面定义一个CBDlg的实例m_bDlg,这样在对话框A就可以通过m_bDlg.m_bData的方式 访问对话框B的成员变量m_bData了 ...
MFC中怎样添加对话框及将对话框里输入的数据带入程序
在dialog选项上直接右键添加一个dialog就行了 如果要将对话框中的数据添加到程序中的话,先要给对话框定义一个变量,右键对话框属性可以设置,然后双击对话框,使用updatadate(true),updatadate(false),一个是将变量值输出到对话框,一个是将对话框值传入变量,具体试一下就知道了。希望以上解答能...
mfc中怎样往类里加成员函数
那个选到CLASSVIEW 然后右击你需要添加成员函数的类,选择ADD MEMBER FUNCTION,出来的对话框 例如public int add(int y,int x);Function Type:int Function Declare:add(int y,int x)Acess:选择public 最后两个static virtual你的函数是静态就选择static,是虚函数就选择virtual ...
MFC在自己的CPP文件中如何调用对话框类的成员函数
其后有三种方式可以实现 方法一:中直接调用m_progress.setpos(progresscount);方法二:可以通过发送自定义消息,让对话框调用m_progress.setpos(progresscount);方法三:可以把具体实现放在类内部的成员函数(非静态)中,而在线程函数值用对话框指针调用这个函数,这样比较方便。
MFC中怎么加入一个菜单,点击菜单运行一个对话框,要详细一点!!_百度知...
1、新建一个MFC工程,选择单文档。2、打开资源视图列表。3、选择插入一个对话框。4、然后在弹出来的对话框点击右键或者双击,选择添加一个类。5、然后在回到资源视图,打开menu菜单,点击IDR_MAINFRAME。6、添加函数。要记得在Ctest1View里面加上dlg.h这个头文件。7、完成。